簡體   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