【发布时间】:2014-01-06 07:35:07
【问题描述】:
假设我有以下结构:
public struct TaskWithProgress<TResult>
{
public Task<TResult> Task { get; set; }
public IProgress<double> Progress { get; set; }
public string Description { get; set; }
public CancellationTokenSource CancelTokenSource { get; set; }
}
我希望能够在我的代码中的任何位置创建这个结构,并允许Task 报告Progress。但是,报告进度时要执行的操作以一种形式存在(更新进度条)。通常我会像这样使用进度属性:
Progress = new Progress<double>(x => pb.Position = Convert.ToInt32(100 * x));
有没有办法可以从客户端代码创建这个IProgress<T>,然后订阅 Report() 回调?
编辑 我可以使用具体的实现并使用 ProgressChanged 事件......但是我不能调用 IProgress 的 Report() 方法。这里的前进方向是什么?
【问题讨论】: