解決策: 別のAppDomainでコードを実行すると、コメント内のSinatrのおかげで例外がクラッシュし、クラッシュします。
コード例。 (クラッシュしたことがない)
https://bitlush.com/blog/executing-code-in-a-separate-application-domain-using-c-sharpに触発さ
using (Isolated<Work> isolated = new Isolated<Work>())
{
Thread TestThread = new Thread(new ParameterizedThreadStart(isolated.Value.COM_StartCommand));
TestThread.Start("COM4");
Thread.Sleep(5000);
TestThread.Abort();
}
for (int i = 0; i < 1000; i++)
{
Console.WriteLine("bump" + i);
Thread.Sleep(1000);
}
:前には、後
Work work = new Work();
Thread execThread = new Thread(new ParameterizedThreadStart(work.COM_StartCommand));
execThread.Start("COM4");
Thread.Sleep(5000);
execThread.Abort();
for (int i = 0; i < 1000; i++)
{
Console.WriteLine("bump" + i); //crashes around iteration 20
Thread.Sleep(1000);
}
を(クラッシュしました)。 これで変数を渡すだけでいいです。
何がdllですか?中断スレッドは最後の手段ですが、クラッシュのチャンスはコストです。おそらく[DLLを別の 'AppDomain'(https://stackoverflow.com/q/88717/1997232)にロードして中止する代わりにアンロードすることを試みることができますか? – Sinatr
dllが不明です!! 別のAppDomainに関する興味深いアイデア、私はそれを調べようとしています – humudu