我想创建一个应用程序客户端 - LAN(局域网)中的服务器聊天。 我在Console c#中演示完整且没有错误。但是当我使用Window Form(c#)时,在服务器端,它就停留在行中:
Socket client = newsock.Accept();
并且未运行显示窗口窗体。
我该如何解决?谢谢大家!
答案 0 :(得分:0)
这是因为,newsock.Accept()
方法实际上正在等待请求,并且在收到请求之前,代码的下一行(显然是UI组件的初始化方法)不会到达。您需要做的是将其移动到一个线程中,然后将其分配给load事件。例如:
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
}
});
}