2010-11-18 10 views
2

スレッドを停止するには、ある時点で「break」コマンドを実行してスレッドを停止してください。スレッドの停止

+2

ブレイクはループ用です。スレッドprocが終了するとスレッドが終了するか、スレッドでAbortが呼び出されます。中止すると、スレッドに例外がスローされます。 –

+0

'休憩 'とはどういう意味ですか? C#キーワード?キーワードはループを終了し、スレッドにはまったく関係しません。 – CodesInChaos

+1

クライアントからのデータのwhileループで待機しているサーバークライアントがあり、そのループを壊してしまった場合、スレッドは停止しませんか? – Alex

答えて

3

あなたはこのような何かをやって意味するかですか?

void SomeMethod() 
{ 
    while(true) 
    { 
     //do something 
     if(condition) 
      break; 
    } 
} 

//somewhere else... 
Thread t = new Thread(SomeMethod); 
t.Start(); 

もしそうなら、それはスレッドを終了する安全な方法です。

+0

ありがとうございました!!!! – Alex

3

スレッドのアボートは、あなたが意図したものだと思いますが、スレッドがappdomainバリアによって分離されていない限り、使用する適切なテクニックではありません。

+0

正確に。スレッドを殺したり、自殺させたりしないでください。 – CodesInChaos

+0

Richterの「CLR via C#」第3版では、617〜618ページの戦略について詳しく説明しています。 "スポンサー" appdomainは、私はそれを呼び出して、ThreadAbortExceptionをキャッチし、デッドスレッド上のResetAbortメソッドを呼び出します。 –

+0

スレッドを殺す安全な方法を見つけることができる場所へのリンクはありますか? – Alex

3

Parallel.ForでBreak()メソッドを参照している場合は、ループ反復の安全な中止を要求するために、が特に設計されています。です。

この技術の例は、described here.

関連する問題