0

我无法在作为后台线程运行的函数中设置断点。是否可以调试后台线程。

以下是实现:

// Thread settings

SettingTestThread1();

BackgroundWorker testThread1 ;
private void SettingTestThread1()
{

  testThread1 = new BackgroundWorker();


  testThread1.DoWork += new DoWorkEventHandler(testThread1Handler);
  testThread1.RunWorkerCompleted += new RunWorkerCompletedEventHandler(testThread1CompletedHandler);
  thread.Sleep(50) ; testThread1 .WorkerReportsProgress = true;


}


  private void testThread1Handler(object sender, DoWorkEventArgs e)
        {
             //body of the testThread
             func1();
             func2();
             func3();


        }

 private void testThread1CompletedHandler(object sensor, RunWorkerCompletedEventArgs e)
        {
             //Clean up , destruct-or calling, disposing off variable
        }

main()
{

   SettingTestThread1();
   testThread1.RunWorkerAsync();


}

但是当我运行它时,我无法看到断点击中任何 func1、2 或 3 主体。我也在代码中的 testThread1.RunWorkerAsync 之前在 main 中调用 SettingTestThread1()。

Rgds, Rp

4

1 回答 1

0

我猜这里发生的事情是你的程序在调用后台线程之前就已经存在。运行后台工作程序后尝试添加睡眠:

public static void main()
{

    SettingTestThread1();
    testThread1.RunWorkerAsync();

    System.Threading.Thread.Sleep(2000);
}

事实上,后台线程的终止对于程序退出不是强制性的。如果您希望您的主线程等待后台线程结束......好吧,不要使用后台线程,而是使用普通线程。

于 2013-06-25T07:11:27.763 回答