所有,我有一个调用IProgress<T>.Report();
来更新我的 UI 并进行相关数据选择的方法。后台线程随后通过与它一起工作的界面获取当前选择(在 UI 上)。因此,IProgress<T>.Report();
在进行 UI 更新之前,调用会阻止返回,这一点很重要。MSDN没有提供有关该Report();
方法这方面的信息...
在委托完成之前,该方法是否会Report();
阻止返回后台线程?Report();
谢谢你的时间。
所有,我有一个调用IProgress<T>.Report();
来更新我的 UI 并进行相关数据选择的方法。后台线程随后通过与它一起工作的界面获取当前选择(在 UI 上)。因此,IProgress<T>.Report();
在进行 UI 更新之前,调用会阻止返回,这一点很重要。MSDN没有提供有关该Report();
方法这方面的信息...
在委托完成之前,该方法是否会Report();
阻止返回后台线程?Report();
谢谢你的时间。
这完全取决于IProgress<T>
您正在使用的实现。如果您要使用内置的Progress<T>
,则Report()
不要等待委托/事件处理程序完成。
您可以创建自己的实现来执行IProgress<T>
您想要的操作(最有可能调用SynchronizationContext.Send()
)并使用它。
但我不确定这是一个好的设计,我认为你的工作代码不应该依赖于必须在 GUI 线程上进行的计算。您可能需要考虑更改您的设计。