繁体   English   中英

VS2010上的stacktrace

[英]stacktrace on VS2010

private void ParallelCrashTest() 
{

    for (int x = 0;x < 100; x++)
    {
        Dowork_1(i);
     }
}

private void Dowork_1(int i)
{
 ThreadInfo threadInfo = new ThreadInfo();
 threadInfo.first = 0;
 threadInfo.last = 100;
 for (int x = 0;x < 60; x++)
    {
        Dowork_2(threadinfo);
        progressBar2.Value = x + 1;   
    }
}
private void Dowork_2(object param)
{

    ThreadInfo threadInfo = param as ThreadInfo;
    int first = threadInfo.first;
    int last = threadInfo.last;
    Parallel.For(first, last, i =>
    {

        didsomthing...

    }

    Update();

}

因此它不起作用。 (CPU工作90-100%,这意味着我想我的应用程序仍在工作)我使用Update()而不是Application.DoEvent() 我的应用程序崩溃或无法Update()。 我不知道 。 我认为这可能是Update()的问题,但我不确定。 你有什么建议吗? 谢谢 。

以什么方式崩溃?

我的猜测是您正在尝试从另一个线程更新GUI,例如更新进度条。 为此,您必须使用Invoke

如果您可以提供一个简化的,简化的但完整的示例代码,该示例可以重现错误,从而使我们不必猜测,这将很有用。 您可以通过将项目复制到新文件夹中,然后删除不必要的文件,类,方法和行,直到无法删除更多行,同时又会重现错误,再删除该行。

从工作线程中,Update()方法和progressBar2.Value分配均不合法。 它不会使Visual Studio崩溃,甚至不会使VS2010崩溃,您都会得到一个简单的IllegalOperationException来告诉您您做的事情不正确。

您需要使用Control.Invoke()方法。 我链接的MSDN文章中有一个很好的例子。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM