非常簡單的問題。我通過按鈕按下動作創建的線程中的while循環只發生一次,「this」不再重複。它確實收到第一條消息,但由於while循環被卡住,未來的消息不會被收到。第一條消息確實打印出來。雖然(真)只發生一次沒有錯誤
此外,在打印消息之後,切換循環從不發生。
private void button1_Click(object sender, EventArgs e)
{
Thread Listener = new Thread(ServerListener);
Listener.Start();
}
public void ServerListener()
{
byte[] buf;
NetworkStream serverStream = clientSocket.GetStream();
while (true)
{
Console.WriteLine("this");
if (serverStream.DataAvailable)
{
buf = new byte[clientSocket.ReceiveBufferSize];
serverStream.Read(buf, 0, buf.Length);
string stringdata = Encoding.ASCII.GetString(buf);
Console.WriteLine("Received message: " + stringdata);
switch (stringdata)
{
case "ping":
buf = Encoding.ASCII.GetBytes("pong");
Console.WriteLine("Sent pong");
serverStream.Write(buf, 0, buf.Length);
serverStream.Flush();
break;
case "handshake":
buf = Encoding.ASCII.GetBytes("lol");
Console.WriteLine("Sent confirmation");
serverStream.Write(buf, 0, buf.Length);
serverStream.Flush();
break;
}
}
}
}
我確定有人會來告訴我使用任務。我知道如何使用任務,但我發現任務與長時間運行選項和普通線程之間沒有區別。該工作
您是否嘗試過在調試器中逐步查看它在做什麼? – cost
您的線程死亡,但有一個例外。抓住並檢查它。 – dymanoid
我嘗試捕獲Saruman所述的任何異常。 –