3

我是 VB.net 和套接字编程的新手,这是一个新手问题,所以请友好:)

我已经阅读了十几篇关于创建简单的异步聊天服务器(如 app)的文章。尽管我对编程并不陌生,但我仍处于学习 .net 模型的早期阶段。

这个 Microsoft vb.net 和 c sharp 示例应该是一个异步服务器来监听客户端连接,但是当我将代码复制并粘贴到 Window Loaded 事件处理程序中的 vb.net 表单中时,它会阻止我的 GUI。我不明白为什么。它应该是异步的。在我将客户端代码粘贴到不同的 vb.net 表单中并运行它之前,该窗口不会显示。然后显示服务器上的 GUI。:(

谢谢

4

2 回答 2

2

看到在主线程中调用了吗while (true)StartListening那东西实际上完全使用了它被调用的线程。

它仍然是异步的。问题是什么是异步的。有这个 main 方法来编排套接字,而 IO 实际上与它是异步的。但方法本身不一定与调用它的代码异步。

于 2013-03-04T22:19:35.590 回答
1

不要调用StartListeningUI 线程。从新线程调用它或重写它以使用 UI 线程模型。然后它将按预期异步运行(但可能会遇到新问题,例如跨线程访问)。

请注意,在示例中,调用StartListening() never 返回或程序将立即退出。也就是说,该示例演示了异步操作的使用,但将它们包装在“同步”控制台程序中。毕竟,它是一个样本,而不是一个旨在直接组合的组件。

于 2013-03-04T22:24:22.337 回答