【发布时间】:2021-06-01 17:35:55
【问题描述】:
我在c#中有一个常用的方法。
ReadfromSource 方法根据传递的配置参数执行不同的操作。
它执行类似的操作
- 无休止地监听 TCP 端口并接收传入的数据。
- 无休止地监听一个 http 端口并接收传入的数据。
- 无休止地监听文件夹路径并接收传入的文件。
public void ReadData(List<Configuration> configurations)
{
foreach(var config in configurations)
{
ReadfromSource(Configuration config);
}
}
public void ReadfromSource(Configuration config)
{
while(true)
{
// code for reading data from tcp port
thread.sleep(1000); //listens for each and every second
}
}
使用多线程,我需要同时运行所有操作
如何在 c# 中使用多线程实现上述场景,在此先感谢。
【问题讨论】:
-
探索者异步等待
-
how to implement the above scenario using mutithreading in c#,Task.Run可能是一个起点。 -
我在 foreach 循环中尝试了
Task.Run,但是第一个任务是单独创建并启动的......剩余的任务没有创建 -
这是一个复杂的问题,“如何实现多线程?”没有直接的答案,这取决于很多事情,包括你的 ReadFromSource 实际做了什么。对于 I/O 绑定操作,您不应该使用 Task.Run,而是使用异步 I/O API,例如
Stream.ReadAsync -
可以查看同样的问题:stackoverflow.com/questions/9418554/…
标签: c# asp.net multithreading process threadpool