有人能为我提供线程方面的头绪吗?我认为我知道如何做一些事情,但我需要知道如何做以下几点:
设置一个主线程,直到我发出停止信号(如果您想知道,它将在接收到数据时终止)。然后我想启动第二个线程,它将从文本框中捕获数据,并应在我发出停止信号时退出,这是在用户按下回车键时发生的。
谢谢!
有人能为我提供线程方面的头绪吗?我认为我知道如何做一些事情,但我需要知道如何做以下几点:
设置一个主线程,直到我发出停止信号(如果您想知道,它将在接收到数据时终止)。然后我想启动第二个线程,它将从文本框中捕获数据,并应在我发出停止信号时退出,这是在用户按下回车键时发生的。
谢谢!
这是我的做法...
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()" 方法创建线程。
新创建的线程将运行,直到满足其停止条件,然后终止...
可以使用委托向“主”发送信号,告诉它线程何时已经终止...这样你就可以启动第二个线程了...
最好阅读:这篇 MSDN 文章
Thread th = new Thread(function1);
th.Start();
th.Abort();
void function1(){
//code here
}
Thread.Abort
几乎从来不是解决问题的方式。使用带有ManualResetEvent
的循环,甚至是易失性布尔标志,将是更安全的方法。 - DouglasPlatformNotSupportedException
在该平台上不支持线程中止。 - Soner from The Ottoman Empire
System.Windows.Forms.Timer
而不是创建新的线程。 - Dax Fohl