クラスのメソッドを呼び出す BackgroundWorker があります。このメソッドには、BackgroundWorker への参照が与えられ、進行状況を報告できるようになっています。この疑似コードは概要を示しています。
void BackgroundWorker_DoWork( object sender )
{
BackgroundWorker w = sender as BackgroundWorker;
var c = new ProcessingClass()
c.someMethod( w )
}
class ProcessingClass()
{
someMethod( BackgroundWorker w )
{
w.ReportProgress(50)
//calculations...
}
}
問題は、進捗状況を報告した後に「計算」を行うと、プログラムがクラッシュすることです。デバッガーはApplication.Run( new frmMain() );
、「呼び出しのターゲットによって例外がスローされました」という理由で、スタートアップの「プログラム」クラスにジャンプします。
進捗状況を報告しなければ、すべてうまくいきます。誰かが理由を知っていますか?これはスレッドと関係があると思いますが、その方法はわかりません。