27

谁能给我一个关于线程主题的先机?我想我知道如何做一些事情,但我需要知道如何做以下事情:

设置一个将保持活动状态的主线程,直到我发出信号停止(如果您想知道,它将在收到数据时终止)。然后我想要启动第二个线程,它将从文本框中捕获数据,并且当我向它发出信号时应该退出,当用户按下回车键时会发生这种情况。

干杯!

4

3 回答 3

23

我就是这样做的...

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...
    }
}

然后在它自己的线程中运行它......(我这样做是因为我也想将 args 发送到线程)

private void FireThread(){
    Thread thread = new Thread(new ThreadStart(this.startThread));
    thread.start();
}
private void (startThread){
    new ThreadA(args).Run();
}

通过调用“FireThread()”创建线程

新创建的线程将一直运行,直到满足其停止条件,然后它就死了……

您可以用代表向“main”发出信号,告诉它线程何时死亡..这样您就可以启动第二个......

最好通读:这篇 MSDN 文章

于 2012-05-19T22:38:07.940 回答
11
Thread th = new Thread(function1);
th.Start();
th.Abort();

void function1(){
//code here
}
于 2012-05-19T22:07:05.063 回答
5

在生成的线程中使用静态 AutoResetEvent 以使用 Set() 方法回调主线程。这家伙在 SO 中有一个关于如何使用它的相当好的演示。

AutoResetEvent 说明

于 2012-05-20T00:10:00.497 回答