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 の前に、メインで 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 に答える