吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 204|回复: 5
收起左侧

[其他求助] 为什么C#引用不了Progress<T>.Report

[复制链接]
烟99 发表于 2024-10-5 23:46
300吾爱币
搜集网上资料后,已确定NET Framework版本高于4.5,命名空间System.Threading.Tasks已引入,但progress.Report(i);还是报错提示
[Asm] 纯文本查看 复制代码
Progress<double>”未包含“Report”的定义,并且找不到可接受第一个“Progress<double>”类型参数的可访问扩展方法“Report”(是否缺少 using 指令或程序集引用?)




[C#] 纯文本查看 复制代码
using System.Threading.Tasks;

namespace ClassLibrary1
{
    public class Class1
    {


        class Program
        {
            static void Main(string[] args)
            {
                var progress = new Progress<double>();
                progress.ProgressChanged += (sender, value) =>
                {
                    Console.WriteLine($"Progress: {value * 100:P0}");
                };

                Task.Run(() =>
                {
                    for (double i = 0; i <= 1; i += 0.1)
                    {
                        progress.Report(i);
                        Task.Delay(100).Wait(); // 模拟耗时操作
                    }
                });

                Console.ReadKey();
            }
        }
    }
}


求懂C#的指点,已经折腾一天了也没弄明白

最佳答案

查看完整内容

((IProgress)progress).Report(i); 搜出来的答案

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

平淡最真 发表于 2024-10-5 23:46
((IProgress<double>)progress).Report(i);
搜出来的答案

点评

问题解决了,CB给你,但是后来进一步确认进程堵塞造成的窗口假死是因为加载第三方nuget库导致的,不知道怎么对第三方类库实现异步加载  详情 回复 发表于 2024-10-6 12:50
侃遍天下无二人 发表于 2024-10-6 03:04
因为里面真没有这个方法吧,你看官方文档里最接近你需求的是OnReport
https://learn.microsoft.com/en-us/dotnet/api/system.progress-1?view=net-8.0

Equals(Object) Determines whether the specified object is equal to the current object.(Inherited from Object)
GetHashCode() Serves as the default hash function.(Inherited from Object)
GetType() Gets the Type of the current instance.(Inherited from Object)
MemberwiseClone() Creates a shallow copy of the current Object.(Inherited from Object)
OnReport(T) Reports a progress change.
ToString() Returns a string that represents the current object.(Inherited from Object)

点评

可以是可以,但是还是报错说有保护级别  详情 回复 发表于 2024-10-6 09:59
平淡最真 发表于 2024-10-6 03:07
 楼主| 烟99 发表于 2024-10-6 09:59
侃遍天下无二人 发表于 2024-10-6 03:04
因为里面真没有这个方法吧,你看官方文档里最接近你需求的是OnReport
https://learn.microsoft.com/en-us/ ...

可以是可以,但是还是报错说有保护级别
 楼主| 烟99 发表于 2024-10-6 12:50
平淡最真 发表于 2024-10-6 03:05
((IProgress)progress).Report(i);
搜出来的答案

问题解决了,CB给你,但是后来进一步确认进程堵塞造成的窗口假死是因为加载第三方nuget库导致的,不知道怎么对第三方类库实现异步加载
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-12-11 23:30

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表