Gui线程可以写在套接字上还是不正确?

时间:2014-10-18 17:24:14

标签: c# wpf user-interface

我想问你是否在语义上是正确的,在插座上写一个gui WRITE?这可能是个问题? GUI中存在阻塞的风险?

提前致谢

1 个答案:

答案 0 :(得分:1)

这取决于您配置套接字的方式。当然,非阻塞套接字不会阻止您的GUI线程。但是恕我直言,由于要求在你尝试时处理非致命的发送失败,因此编写代码要相当困难。

恕我直言,更好的模式是利用套接字提供的异步范例之一。不幸的是,System.Net.Sockets.Socket类还没有更新,以适应C#中新的async / await功能。但它仍然有两个非常有用的异步模型可供选择(原始" Begin / EndXXX"模型,或者' XXXAsync"模型,尽管它的名字并没有'直接使用async / await)。

如果您愿意使用TcpListener,TcpClient和流转到更高级别的API,那么可以使用async / await,这可以为您提供更简单的编写代码的方法。我之前发现了SO讨论,其中有人发布了一个简短的样本,展示了如何做到这一点: Using .Net 4.5 Async Feature for Socket Programming