我正在開發一個C#項目,其中有一個Backgroundworker,可以完成「昂貴的工作」。爲什麼我會用BackgroundWorker.ReportProgress獲取TargetInvocationException?
在我的「DoWork」中,我想通過「backgroundworker.ReportProgress(some int)」報告進度。但是當我的程序進入調用「backgroundworker.ReportProgress(some int)」時,我得到一個「System.Reflection.TargetInvocationException」。
如何解決我的問題?
private void btnGrap_Click(object sender, EventArgs e)
{
//some code
ListsObject listsObject = new ListsObject(filePaths, enumList);
progressBar1.Maximum = 100;//count;
this.bgrndWorkerSearchMatches.RunWorkerAsync(listsObject);
}
_DoWork:
private void backgroundWorkerSearchMatches_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < 100; i++)
{
bgrndWorkerSearchMatches.ReportProgress(i);
}
}
_ProcessChanged:
private void bgrndWorkerSearchMatches_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
//progressBar1.Value = e.ProgressPercentage;
}
我找到了答案:
我Visual Studio創建BackgroundWorker的事件處理程序,做了ñ OT知道我不得不手動設置:
bgrndWorkerSearchMatches.WorkerReportsProgress = true;
您可能希望設置調試器打破所有異常。 – SLaks