自分では理解できない、奇妙ではあるが理解できるエラー解決策に遭遇しました。System::Threading::Thread
このような関数を実行するスレッドを作成しています:
try
{
perform_adapt_rgb(alg);
Control::Invoke(adpt_deg2);
}
catch ( ThreadAbortException^ e )
{
Control::Invoke(adpt_deg2);
//Thread::ResetAbort();
}
複雑にするのは意味がないので、すべてを貼り付けていません。UI の更新を呼び出します。問題は、void perform_adapt_rgb(int alg); の場合に発生します。関数はサイクルの OMP をカプセル化し、thread->Abort(); によって UI からプロセスを強制終了しようとします。関数。Visual Studio 内でテストしている間、すべて正常に動作しますが、exe ファイルから実行すると、アプリケーションが応答していないことが示されます -> 解決策を待ち、ダイアログを閉じます。今、私の推測では、サイクルの OMP-ed を予期せず終了させることが問題の原因であると推測されますが、デバッグできる VS で機能するため、完全にはわかりません。OMP がなくてもすべて正常に動作します。誰かが私にその回避策を教えてもらえますか?