任何人都可以給我一個關於線程主題的頭馬?我想我知道如何做一些事情,但我需要知道如何做到以下幾點:C#線程 - 如何啓動和停止線程
設置一個主線程,它會一直保持活動狀態,直到我發出信號停止(如果您想知道,它會在數據被接收)。然後我想要第二個線程開始,它將捕獲來自文本框的數據,並且當我發信號給用戶按下回車鍵時發生的信號時,它應該退出。
乾杯!
任何人都可以給我一個關於線程主題的頭馬?我想我知道如何做一些事情,但我需要知道如何做到以下幾點:C#線程 - 如何啓動和停止線程
設置一個主線程,它會一直保持活動狀態,直到我發出信號停止(如果您想知道,它會在數據被接收)。然後我想要第二個線程開始,它將捕獲來自文本框的數據,並且當我發信號給用戶按下回車鍵時發生的信號時,它應該退出。
乾杯!
這是我要做的事......
public class ThreadA {
public ThreadA(object[] args) {
...
}
public void Run() {
while (true) {
Thread.sleep(1000); // wait 1 second for something to happen.
doStuff();
if(conditionToExitReceived) // what im waiting for...
break;
}
//perform cleanup if there is any...
}
}
然後在自己的線程運行這個...(我做這種方式,因爲我也想送參數傳遞給線程)
private void FireThread(){
Thread thread = new Thread(new ThreadStart(this.startThread));
thread.start();
}
private void (startThread){
new ThreadA(args).Run();
}
線程通過調用創建「FireThread()」
新創建的線程將運行,直到其條件爲s頂部被滿足,那麼它死......
可以發出信號「主」與代表,告訴它當線程已經死亡..所以你就可以開始第二個...
最佳要通讀:This MSDN Article
請注意,這種方法創造了展示和實際做東西之間長達一秒的時差的機會。不一定不好,取決於你的要求。我現在正在搜索如何使用EventWaitHandle進行跨進程/線程信號的最佳使用後臺工作線程,但後來我有好運控制這兩個進程(東西生成器和東西)。這應該消除任何投票延遲。 –
在生成的線程中使用靜態AutoResetEvent使用Set()方法回調主線程。這傢伙在如何使用它有一個相當不錯的演示。
只使用一個while循環另一個線程上,直到它接收數據 –
啓動一個線程是很容易的。停止一個是非常困難的。專注於停止。 –
您可能會考慮使用BackgroundWorker。它具有線程安全的事件回調,如果您需要操作表單/控件組件,則它非常方便。 – climbage