問題描述:
爲了防止界面卡死,在服務端我新開了一個進程來監聽客戶端的連接請求,在關閉的時候卻卻提示“一個封鎖操作被對 WSACancelBlockingCall 的調用中斷”。
如圖
具體錯誤代碼: private void InitForm()
{
MyController = new ControllerManager(this);
/創建一個新的進程,以防界面卡死
new Thread(MyController.Load).Start();
}
注:MyController.Load()裏面: Socket newClient = _tcpl.AcceptSocket();
就是這句話出錯。
解決方式:爲 new Thread(MyController.Load).Start();添加一個進程名,然後在窗口的關閉時間中Abort掉。
代碼如下:Thread LoadThread= new Thread(MyController.Load);//創建一個新的進程,以防界面卡死
private void MainForm_FormClosing(object sender, FormClosingEventArgs e)
{
LoadThread.Abort();
}