0
私はマルチスレッドアプリケーションを開発しています。アンマネージコードを実行するスレッドを中止する方法
スレッドの1つがアンマネージコードを実行し、アンマネージコードが例外を発生させると、thread.Abort()は何もしません。実行はthrad.Abort()行で停止します。
C#でアンマネージコードを実行するスレッドを中止するにはどうすればよいですか?
私はマルチスレッドアプリケーションを開発しています。アンマネージコードを実行するスレッドを中止する方法
スレッドの1つがアンマネージコードを実行し、アンマネージコードが例外を発生させると、thread.Abort()は何もしません。実行はthrad.Abort()行で停止します。
C#でアンマネージコードを実行するスレッドを中止するにはどうすればよいですか?
私は同様の問題がありました。あなたのスレッドがアンマネージコードとマネージコードを実行していると仮定します。マネージコードにフラグとスレッドを持っていることを私は推測します。このような
何か:
private Thread thread1 = null;
private bool thread1Abort = false;
private void KillAllThreads() {
if (thread1 != null && thread1 .IsAlive)
thread1Abort = true;
}
private void function1() {
try {
if (mDocumentGroupThreadAbort) {
mDocumentGroupThreadAbort = false;
//Is you want to restart the thread may be a problem using abort. Thread will raise an error because the abort is not concluded.
//mDocumentGroupThread.Abort();
return;
}
//function with unmanaged code...
} catch (System.Threading.ThreadAbortException) {
....
} finally {
...
}
}
static void Main(){
this.thread1 = new Thread(() => {
function1();
});
this.thread1.Start();
Console.Readline();
}
PS:それは悪いソリューションであるかどうかはわかりませんが、それは私
のために働いていました