2016-10-28 14 views
0

私はマルチスレッドアプリケーションを開発しています。アンマネージコードを実行するスレッドを中止する方法

スレッドの1つがアンマネージコードを実行し、アンマネージコードが例外を発生させると、thread.Abort()は何もしません。実行はthrad.Abort()行で停止します。

C#でアンマネージコードを実行するスレッドを中止するにはどうすればよいですか?

答えて

0

私は同様の問題がありました。あなたのスレッドがアンマネージコードとマネージコードを実行していると仮定します。マネージコードにフラグとスレッドを持っていることを私は推測します。このような

何か:

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:それは悪いソリューションであるかどうかはわかりませんが、それは私

のために働いていました
関連する問題