源码:
private void button1_Click(object sender, EventArgs e)
{
Task t = new Task(() =>
{
foreach (string item in urls)
{
wb_browser.Url = new Uri(item);
while (!alreadyGetUrl) { }//等待
alreadyGetUrl = false;
}
});
t.ContinueWith(task =>
{
if (task.Status == TaskStatus.Faulted)
{
textBox1.Invoke(new Action(() =>
{
textBox1.AppendText(task.Exception.InnerException.Message + "\r\n");
}));
}
}, TaskContinuationOptions.OnlyOnFaulted);
t.Start();
}
红色的这一行会报出一个异常,问题是为什么用于输出异常的延续任务只在调试的时候起作用,不调试运行却不起作用??
你这是一个异步任务,可以理解为在一个独立线程中执行的任务。
你这个错误应该是不能再其他线程操作UI线程的控件吧。
从其他线程操作UI线程中的控件要么用委托要么用Invoke方法。