/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new QTEST());
}
BackgroundWorker 的 DoWork 事件里面的工作完成后,上面的语句就抛异常了
调用的目标发生了异常
TargetInvocationException
怎么解决
在此请教各位朋友
{
for (int i = 1; i <= progressBar1.Maximum; i++)
{
System.Threading.Thread.Sleep(100);
backgroundWorker3.ReportProgress(i);
}
}
private void backgroundWorker3_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < progressBar1.Maximum; i++)
{
System.Threading.Thread.Sleep(100);
backgroundWorker3.ReportProgress(i);
}
}
你这样试试
BackgroundWorker worker = null;
private void button1_Click(object sender, EventArgs e)
{
//StringBuilder sb = new StringBuilder();
//sb.Append("asdf1");
//MessageBox.Show(sb.Remove(sb.Length - 1, 1).ToString());
worker = new BackgroundWorker();
worker.WorkerReportsProgress = true;
worker.WorkerSupportsCancellation = true;
worker.DoWork += new DoWorkEventHandler(worker_DoWork);
worker.ProgressChanged += new ProgressChangedEventHandler(worker_ProgressChanged);
worker.RunWorkerAsync();
} void worker_ProgressChanged(object sender, ProgressChangedEventArgs e)
{
progressBar1.Value = e.ProgressPercentage;
} void worker_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < progressBar1.Maximum; i++)
{
System.Threading.Thread.Sleep(10);
worker.ReportProgress(i);
} }
这是我写的,已经测试没有问题
我加了这么一句 private void backgroundWorker3_DoWork(object sender, DoWorkEventArgs e)
{
for (int i = 0; i < progressBar1.Maximum; i++)
{
System.Threading.Thread.Sleep(100);
backgroundWorker3.ReportProgress(i);
}
e.Cancel = true;
}