20

以下のコードのようなコードを使用すると、作成された新しいスレッドは、関数が戻った後に自動的に終了しますか?

new Thread(() =>
{
    function();
}).Start();

私はスレッド化にかなり慣れていないので、疑問に思いました。

4

3 に答える 3

15

それは問題ありません...実行可能ファイルが終了する前にスレッドが完了しないことが懸念される場合は、次のことが必要になる場合があります。

new Thread(() =>
    {
        function();
    }){IsBackground = true}.Start();

バックグラウンド スレッドがアプリの終了を妨げることはありません。

于 2013-03-17T15:39:30.703 に答える
2

はい、関数が完了するとスレッドは終了しますが、関数内で使用する必要があるパラメーターがない限り、そのように開始しません。私はただやります:

new Thread(function).Start();
于 2013-03-17T15:33:55.433 に答える
2

スレッドを管理することがベストプラクティスと考えられていますが、その特定のスレッドの結果/状態に関心がなく、キャンセルなどに対処する必要がない場合は、何をしても問題ありません。

自分が行っていることに専用のスレッドが必要かどうかを検討する価値があります。実行しているコードが比較的小さい場合は、代わりにTPLまたはQueueUserWorkItemを介して ThreadPool を利用することを検討してください。

于 2013-03-17T15:40:22.710 に答える