0

我遇到了一个奇怪但可以理解的错误解决方案,我自己无法弄清楚。我正在创建线程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 for 循环意外结束是导致问题的原因,但是我不完全确定,因为它确实在我可以调试的 VS 中工作。没有 OMP 一切正常。有人可以指出我的解决方法吗?

4

1 回答 1

0

好的,伙计们,我整理好了。这可能不是最好的解决方案,但它有效,所以对我来说不再重要了。我现在要做的是将循环的长 OMP 分解为多个部分,检查一些全局布尔值以了解我是否需要退出该函数。比我简单地执行线程自杀......在评估结束时从胎面内部调用中止,而不是从 UI 中止它。如果某人有更好的解决方案,我会保持打开状态。

于 2013-04-12T14:08:33.520 回答