gpt4 book ai didi

c# - .NET 4.0 中的 IProgress

转载 作者:太空宇宙 更新时间:2023-11-03 19:51:29 28 4
gpt4 key购买 nike

是否有一些较旧的 .NET 4.0 等同于 IProgress 的接口(interface)或类? (仅适用于 .NET 4.5)可用于将进度从任务发送到 UI?

或者我应该为它编写自己的类/接口(interface)吗?

最佳答案

IProgress<T> 实际上有两个部分:接口(interface)本身,以及提供的实现,Progress<T> .从技术上讲,该接口(interface)甚至不需要跨线程支持,当然这就是它在实践中的使用方式。

界面,您可以从 .NET 4.5 的文档中逐字复制。这只是一个声明。但要使其有用,您还需要实现它。为此,您需要使用 SynchronizationContext处理 ProgressChanged 的跨线程调用提供给 Progress<T> 的事件或处理程序构造函数。您可以自己编写整个内容,但恕我直言,从 .NET 源代码复制/粘贴是合理的:http://referencesource.microsoft.com/#mscorlib/system/progress.cs,d23df0450d3fd0d6

这是一个相对简单的类,并且不难重新实现,但实际的 .NET 实现应该没有任何需要其他 4.5 功能的地方,因此从源代码复制/粘贴应该可以正常工作。

也就是说,请注意,等效的功能 实际上在早期版本的 .NET 中以 BackgroundWorker 的形式提供。类(class)。这结合了通常与 IProgress<T> 一起使用的异步执行。与 ProgressChanged允许异步操作报告进度的事件。由于 4.5 之前只有一个 .NET 版本还包括通常与 IProgress<T> 一起使用的 TPL 支持。 , 使用 BackgroundWorker在 4.5 之前的遗留代码的上下文中可能更有意义。

关于c# - .NET 4.0 中的 IProgress<T>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38719345/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com