TCP / IP导致WinForm响应缓慢

时间:2013-02-11 15:28:13

标签: multithreading winforms tcp

我有一个运行TCP / IP服务器和客户端的C#WinForm。当单击按钮时,TCP客户端被实例化以传输消息,然后它被关闭。服务器捕获消息,并将其显示在消息框中。

问题:
我的WinForm似乎被打断了。它并不总是响应我的点击(实例化客户端消息传输方法)。我想这是由于服务器线程?如果是这样,我该怎么做才能解决这个中断问题。

1 个答案:

答案 0 :(得分:1)

听起来您的网络正在UI线程中发生。这是一个很大的问题:UI线程意味着可以响应用户事件。

您应该将网络放在单独的线程上,或使用异步API。不要忘记,您只能从UI线程更新UI - 因此您通常使用BackgroundWorker报告UI线程上的进度/完成情况,或者使用Control.Invoke / {{1在UI线程上执行委托。您可以阅读各种书籍和教程中的线程 - 我喜欢Joe Albahari's tutorial

如果您使用的是.NET 4.5 / C#5,则可以使用异步调用来简化生活 - 但如果您使用的是早期版本的.NET,则可能使用单独的线程 会变得更简单。