我想创建一个应用程序客户端-LAN(局部区域网络)中的服务器聊天。我在控制台C#中演示了完整的情况。但是,当我使用窗口表单(c#)时,在服务器端,它被卡在行中:
Socket client = newsock.Accept();
并且不运行出现窗口形式。
我该如何修复?谢谢大家!
这是因为,newsock.Accept()
方法实际上正在等待请求,而您的代码的下一行(显然是UI组件的初始化方法)才能到达请求,直到请求已被请求。已收到。您要做的就是将其移至线程中,然后将其分配给负载事件。例如:
public MyForm(){
InitializeComponent();
this.Loaded += OnWindowLoaded;
}
private async void OnWindowLoaded(object sender, EventArgs e)
{
await Task.Run(() => {
while (runState) {
Socket client = newsock.Accept();
// Then do the rest
}
});
}