【发布时间】:2015-08-06 19:00:20
【问题描述】:
我目前正在重新学习 C# 并开发一个简单的应用程序,该应用程序发送广播消息并在收到时显示在 Windows 窗体上。
我有一个包含两个线程的发现类,一个每 30 秒广播一次,另一个线程在套接字上侦听。由于阻塞调用,它在一个线程中:
if (listenSocket.Poll(-1, SelectMode.SelectRead))
第一个线程的工作原理很像类库中的计时器,它广播数据包,然后休眠 30 秒。
现在原则上它工作正常,当收到一个数据包时,我将它扔到一个事件中,Winform 将它放在一个列表中。问题始于表单,因为主 UI 线程需要 Invoke。现在我只有两个线程,从长远来看,当线程数量增加时,它似乎不是最有效的。
我已经探索了任务,但这些似乎更倾向于一次性长时间运行的任务(很像表单的后台工作人员)。
我发现的大多数线程示例都向控制台报告,并且没有调用和锁定变量的问题。
当我使用 .NET 4.5 时,我应该转到任务还是坚持线程?
【问题讨论】:
-
您能否再描述一下您的情况 - 我不确定我是否了解您的主要担忧。
标签: c# multithreading