我是VB.net和套接字编程的新手,这是一个新手问题,所以请好一点:)
我已经阅读了十几篇关于创建像app这样的简单异步聊天服务器的文章。我仍然处于.net中学习模型的早期阶段,虽然我不是编程新手。
This Microsoft vb.net and c sharp example 应该是一个异步服务器来监听客户端连接,但是当我在Window Loaded事件处理程序中复制并粘贴我的vb.net表单中的代码时,它会阻止我的GUI。我不明白为什么。它应该是异步的。直到我将客户端代码粘贴到不同的vb.net表单并运行它之前,窗口才会显示。然后服务器上的GUi显示。 :(
由于
答案 0 :(得分:2)
请参阅主线程中调用的while (true)
中的StartListening
?那个东西实际上完全使用了调用它的线程。
它仍然是异步的。问题是什么是异步的。有一种主要方法可以编排套接字,而IO实际上是异步的。但是该方法本身并不一定与调用它的代码异步。
答案 1 :(得分:1)
不要在UI线程上调用StartListening
。从新线程调用它或重写它以使用UI线程模型。然后它将按预期异步运行(但可能遇到新问题,如跨线程访问)。
请注意,在示例中,对StartListening()
的调用永远不会返回,否则程序将立即退出。也就是说,示例演示使用异步操作,但将它们包装在“同步”控制台程序中。毕竟,它是一个样本,而不是一个直接组成的组件。