我正在 VS2010 Ultimate 中使用 TPL 构建应用程序。大多数情况下,当我从 UI 的线程调用 DoRepresentation() 时,我运行该应用程序时它会变得无响应。
void DoRepresentation()
{
Parallel.ForEach(cgs, loopOptions, g =>
{
UpdateRepresentation(g);
});
}
void UpdateRepresentation(object g)
{
view.Invoke(new Action(() =>
{
representation = new MyRepresentation(g);
}));
}
我不知道为什么应用程序变得无响应。我陷入僵局了吗?
在MyRepresentation 中,我对 OpenGL 进行了一些调用。
view是 Form1(主窗体)内的一个 Control。
当应用程序变得无响应时,我从 VS IDE 暂停它,这是我得到的信息
在“并行任务”窗口中,我得到以下信息:
ID Status Message<br>
1 ?Waiting Task1 is waiting on object: "Task2"<br>
2 ?Waiting No waiting information available<br>
在“调用堆栈”窗口中,我得到以下信息:
[In a Sleep, wait, or join]<br>
[External Code]<br>
Test.dll!Render.DoRepresentation()<br>
App1.exe!Form1.Button1_Click<br>
任何帮助将不胜感激。