我目前已经建立了一个对等的“聊天”程序。它目前使用计时器来接收消息,并使用客户端将它们发送给运行该程序的其他人。我真的想让整个系统异步,所以我不再抱怨主要的可执行文件冻结等等。
我已将所有代码(VB.net)粘贴到此处:http://pastebin.com/EcrtCgVc
有人可以协助我使这个系统更快,异步或做得更好。
如果您想要指向完整来源的保管箱的链接,我也可以提供此链接。
答案 0 :(得分:0)
我建议你看看这个示例项目:
异步服务器套接字示例
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
答案 1 :(得分:-1)
不看你的代码,我也在使用套接字编程。 “不要将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
很抱歉,如果代码不完全正确。我按记忆键入了它。