【发布时间】:2020-05-15 03:18:58
【问题描述】:
我正在监控设备,使用下面的示例代码,一切正常。问题是关于如何同时处理每个进程。让我解释一下。
在监控设备时,我们会在设备断开连接时触发一个事件。例如,如果我们必须等待每个设备重新启动或重新连接到网络,我们在开始下一个命令之前使用 thread.sleep()。唯一的问题是,如果我们有大量设备,每个设备将同时完成一个,可能需要很长时间才能完成所有设备。在这个例子中,睡眠时间为 10 秒,每分钟只能完成 6 台设备。
我应该如何为每个设备启动 1 个单独的进程,并(几乎)同时运行它?还是?
monitor.DeviceDisconnected += this.OnDeviceDisconnected;
private void OnDeviceDisconnected(object sender, DeviceDataEventArgs e)
{
......
Thread.Sleep(10000);
......
}
【问题讨论】:
-
永远不要在 UI 应用程序的主线程中调用 Thread.Sleep,因为它会阻塞线程并因此阻塞 UI。如果您需要等待,请改用
await Task.Delay。 -
您需要查看Task Parallel Library 进行异步编程。点击链接并通读文档,您将了解如何继续操作。
-
这里有很多问题,但您正在寻找的是异步编程。我推荐 Tim Corey 的 YouTube 视频作为一个很好的起点:youtu.be/2moh18sh5p4