我遇到了一个奇怪但可以理解的错误解决方案,我无法自己弄清楚。我正在创建线程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,一切正常。有人可以指点我解决这个问题吗?
答案 0 :(得分:0)
好的,我把它整理出来了。它可能不是最好的解决方案,但它的工作原理对我来说无关紧要。我现在所做的是打破长时间的OMP循环到部分检查一些全局bool,以找出我是否需要打破这个功能。比我简单地执行线程自杀...在评估结束时从内部调用abort而不是从UI中止它。我保持开放,以防某人有更好的解决方案。