我有一个创建n个线程的应用程序。每个线程负责通过 TCP 套接字与系统交互,并将状态(是否在线,系统中的其他数据)更新到数据库以及返回到根据数据在网格中填充/更新的 UI。
当线程数增加时,UI 进入非响应模式。要求是所有线程都应该并行执行,以便状态更新没有延迟。如果我使用 ThreadPool 可能会导致状态更新延迟。任何帮助表示赞赏
我有一个创建n个线程的应用程序。每个线程负责通过 TCP 套接字与系统交互,并将状态(是否在线,系统中的其他数据)更新到数据库以及返回到根据数据在网格中填充/更新的 UI。
当线程数增加时,UI 进入非响应模式。要求是所有线程都应该并行执行,以便状态更新没有延迟。如果我使用 ThreadPool 可能会导致状态更新延迟。任何帮助表示赞赏
我建议您WorkQueue
为 UI 创建自己的,所有其他线程将Enqueue
进入该队列并继续其工作。
然后使用System.Windows.Forms.Timer
具有一定间隔的 a 并相应地处理排队的事件。UI 将响应。
您可以尝试在命名空间中使用任务并行库System.Threading.Tasks
。它比使用线程或线程池更多地利用 CPU 并为您提供更好的结果。要更新 UI,您必须使用Dispatcher
.
请通过以下链接了解并行任务,
http://msdn.microsoft.com/en-us/library/dd537609(v=vs.100).aspx
编辑:
Action - delegate or method that has to be done parallely
Parallel.Invoke(Action, Action,....);