thread.Abort()の後に何が起こるか?C#スレッド中止例外
Thread mWorker = new Thread(new ThreadStart(this.run));
..
mWorker.Start();
**where**
private void run()
{
Logger.d(TAG, "run()");
...
try {
while (this.mRunning){
...
}
} catch (ThreadAbortException tae){
Logger.e(TAG,"some msg", tae);
this.doSomething();
} catch (IOException ioe){
Logger.e(TAG,"some msg", ioe);
this.doSomething();
} catch (Exception e){
Logger.e(TAG,"some msg", e);
this.doSomething();
} finally {
gracefoulyClose();
}
Logger.d(TAG, "run() - ended");
}
スレッドはより複雑です..しかしesentialがここに表示されます。
は私が持っていると言います。では、Abort()が呼び出されるとどうなりますか?私はキャッチし、doSomething()の呼び出しを続けますか?
私はまだコンソールで受け取るので:
A first chance exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll
An exception of type 'System.Threading.ThreadAbortException' occurred in mscorlib.dll but was not handled in user code
しかし、私は、そのためのキャッチを持っています。私はしないでください? docから
を使用できることのexception.Insteadがスローされますされますので、私のtryキャッチはOKですか?なぜなら、あなたが "try {code A} catch(Ex e){}"を使用すると、コードAが例外を起こす可能性があることを知っているからです...しかし、私のコードはスレッドをスローしません。私のコードはAbortExcetionをキャッチしようとしていますか? – pulancheck1988
whileループの中に何かThreadAbortExceptionが発生した場合は、catchブロックにキャッチされます。 ThreadAbortExceptionは.NETランタイムによってスローされる特別な例外ですが、必ずしもコードである必要はありません。 – dcp