【发布时间】:2011-02-22 09:02:43
【问题描述】:
我想使用来自任务的委托来更新 winforms 中的进度条。
scheduler = TaskScheduler.FromCurrentSynchronizationContext();
public delegate void NotifyAboutIterationEnd(int iteration);
public event NotifyAboutIterationEnd Notify;
var task = Task.Factory.StartNew(() =>
{
//...
Task.Factory.StartNew(() =>
{
Notify(++index);
}, CancellationToken.None, TaskCreationOptions.None, scheduler);
//...
当我启动这段代码时,我可以命中的最后一个断点在 Notify(++index); 行。 然后程序冻结并结束。 如果我将调度程序更改为例如调度程序 = TaskScheduler.Current;然后我有一个例外,不能从其他线程修改 gui。这意味着委托/事件工作正常。那么为什么它在第一种情况下不起作用呢?
【问题讨论】:
标签: winforms progress-bar task-parallel-library