我有一個主窗體類和另一個類。在第二類中,我有一個線程循環:在另一個類中啓動的C#線程
public void StartListening()
{
listening = true;
listener = new Thread(new ThreadStart(DoListening));
listener.Start();
}
// Listening for udp datagrams thread loop
/*=====================================================*/
private void DoListening()
{
while (listening)
{
IPEndPoint remoteIPEndPoint = new IPEndPoint(IPAddress.Any, port);
byte[] content = udpClient.Receive(ref remoteIPEndPoint);
if (content.Length > 0)
{
string message = Encoding.ASCII.GetString(content);
delegMessage(message);
}
}
}
// Stop listening for udp datagrams
/*=====================================================*/
public void StopListening()
{
lock (locker)
{
listening = false;
}
}
在主窗體類的,我就這樣聽在類的構造函數
udp.StartListening();
而且比,在這個主窗體類,我有鑰匙鉤事件也是如此。在這種情況下,我想停止在第二課中運行線程。
private void hook_KeyPressed(int key)
{
if (key == (int)Keys.LMenu)
altPressed = true;
if (key == (int)Keys.F4 && altPressed == true)
udp.StopListening();
}
不幸的是,線程仍在運行。 你對此有一些想法嗎?
非常感謝。
你調用'StopListening'來檢查狀態是否已經改變了,你調試過'while(listen)'loop *嗎? – James
您是否調試過並檢查是否執行了「StopListening」? –
是的,我試過了,這是一個「聽」仍然是真的問題。 – Majak