我目前已经制作了一个多合一的点对点“聊天”程序。它目前使用计时器来接收消息,并使用客户端将它们发送给运行该程序的其他人。我真的很想让整个系统异步,所以我不再抱怨主要可执行文件冻结等。
我在这里粘贴了我所有的代码(VB.net):http: //pastebin.com/EcrtCgVc
有人可以帮助我使这个系统更快、异步或做得更好。
如果您想要完整来源的保管箱的链接,我也可以提供。
我目前已经制作了一个多合一的点对点“聊天”程序。它目前使用计时器来接收消息,并使用客户端将它们发送给运行该程序的其他人。我真的很想让整个系统异步,所以我不再抱怨主要可执行文件冻结等。
我在这里粘贴了我所有的代码(VB.net):http: //pastebin.com/EcrtCgVc
有人可以帮助我使这个系统更快、异步或做得更好。
如果您想要完整来源的保管箱的链接,我也可以提供。
我建议你看看这个示例项目:
异步服务器套接字示例
http://msdn.microsoft.com/en-us/library/fx6588te%28v=vs.110%29.aspx
您可以将它与此示例一起使用:
异步客户端套接字示例
http://msdn.microsoft.com/en-us/library/bew39x2a%28v=vs.110%29.aspx
您可能需要在服务器代码中使用异步方法,并且您可以使用 Delegate Sub 使您的服务器在另一个线程中运行,因此主线程(UI)仍将响应。 http://msdn.microsoft.com/en-us/library/ms172879.aspx
在不查看您的代码的情况下,我也在使用套接字编程。“不要将 GUI 代码与业务代码混用。” 就像 jgauffin 所说,您不应该将在后台运行的代码与 GUI 结合起来。
例如,如果您使用套接字来接受数据或连接,则必须在新线程上运行该方法。例子...
Public Sub YourMainSub()
Dim threadOne As New System.Threading.Thread(AddressOf ListenCode)
threadOne.Start()
'Put other code here.....
End Sub
Public Sub ListenCode()
Dim newPerson = yourServer.Accept()
'Or
Dim newData = yourServer.Receive()
End Sub
抱歉,如果代码不完全正确。我是凭记忆打出来的。