我开发一个测试软件,每做一种测试就使用一个backgroundWorker,在backgroundWorker的RunWorkerCompleted事件里输出测试结果,然后触发下一个测试的backgroundWorker.RunWorkerAsync()事件!在我执行完最后一个测试之后,在RunWorkerCompleted事件里我想输出测试结果,再弹出一个MessageBox通过用户测试完毕,可以这里我加上了一个数据数据之后,软件会输出测试数据,然后就报错说"调用的目标发生了异常问题",这个异常是在Program.cs的Application.Run(new Form1());这一句报出来的,但是如果我不执行输出结果的操作,我的程序可以直接弹出对话框的操作,并且没有异常!谁能知道这是怎么事实??下面就是我的最后的测试backgroundWorker的RunWorkerCompleted事件代码:
private void backgroundWorker8_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{//APScan操作
if (errorState)
{//有错误信息
textBox1.AppendText("APScan操作发生错误,错误信息:" + errorMessage);
textBox1.AppendText(" " + "\n");
}
else
{//操作无错误
textBox1.AppendText("扫描结果:" + "\n");
textBox1.AppendText(" " + "\n");
for (int i = 0; i < al.Length; i++)
{
textBox1.AppendText("记录" + (i + 1).ToString() + "< SSID:" + al[i][0].ToString() + ",MAC地址:" + al[i][1].ToString() + ",信道号:" + al[i][2].ToString() + ",RRSI平均值:" + al[i][3].ToString() + ",RRSI最大值:" + al[i][4].ToString() + ",RRSI最小值:" + al[i][5].ToString() + ",响应率:" + al[i][6].ToString() + "%,测试时间:" + times);
textBox1.AppendText(" " + "\n");
}
}
MessageBox.Show("用户配置的操作已经全部完成!", "任务提示", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
如果注释掉textBox.appendText()的输出代码就是没错了!
异常的类是:TragetInvocationException
al是我用来传结果的ArrayList[] al;
经过测试,异常是在我的for循环里面,当输出了最后一条数据之后就会报出异常