27

スレッド化のトピックについて、だれかが私に有利なスタートを切ることができますか? 私はいくつかのことを行う方法を知っていると思いますが、次のことを行う方法を知る必要があります:

停止するように通知するまでアクティブな状態を維持するメイン スレッドをセットアップします (念のため、データを受信すると終了します)。次に、テキストボックスからデータをキャプチャする2番目のスレッドを開始し、ユーザーがEnterキーを押したときに発生するスレッドにシグナルを送ると終了する必要があります。

乾杯!

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

次に、これを独自のスレッドで実行します...(引数もスレッドに送信したいので、このようにします)

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

スレッドは「FireThread()」を呼び出すことで作成されます

新しく作成されたスレッドは、停止する条件が満たされるまで実行され、その後終了します...

デリゲートを使用して「メイン」にシグナルを送信し、スレッドが終了したことを通知できます..その後、2番目のスレッドを開始できます...

よく読んでください:この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 に答える