我正在使用带有长时间运行的异步任务的 WPF 构建 ASP.NET 应用程序,在某些情况下,需要向用户询问更多信息。有没有办法可以中断但不能取消任务,等待用户响应并根据结果继续?
我所发现的只是在任务之前和之后使用回调的方法。我尝试Send()
通过从主线程传递的 SynchronizationContext 调用 UI 线程方法,但它(有时)抛出 Null Reference Exception。
更具体地说,我无法理解为什么这段代码在调用 Send() 时会抛出 NullReferenceException:
protected void Page_Load(object sender, EventArgs e)
{
Task task = new Task(DoSomeWork, new Tuple<SynchronizationContext, object>(SynchronizationContext.Current, new object()));
task.Start();
}
public void DoSomeWork(object state)
{
Tuple<SynchronizationContext, object> cst = (Tuple<SynchronizationContext, object>)state;
cst.Item1.Send(Writer, "Message");
}
public void Writer(object s)
{
Label1.Text = (s as string);
}