【问题标题】:CS0426 The type name 'Factory' does not exist in the type 'Task'CS0426 类型名称“工厂”不存在于类型“任务”中
【发布时间】:2017-05-25 23:49:11
【问题描述】:

Visual Studio 2017 在访问 Task 类的 Factory 属性时向我显示此错误。请告诉如何解决这个错误。代码是:

var t1 = new Task.Factory.StartNew(() => DoSomeVeryImportantWork(1, 1500));

private static void DoSomeVeryImportantWork(int id, int sleepTime)
        {
            Console.WriteLine($"Task {id} is beginning");
            Thread.Sleep(sleepTime);
            Console.WriteLine($"Task {id} has completed");
        }

【问题讨论】:

    标签: c# visual-studio


    【解决方案1】:

    Task.Factory 是一个静态属性 - 您应该使用类型名称来访问静态成员:

    var t1 = Task.Factory.StartNew(() => DoSomeVeryImportantWork(1, 1500));
    

    【讨论】:

    • 感谢您如此迅速的回复。这真是愚蠢的错误,我应该在发布之前发现。非常感谢:)
    【解决方案2】:

    new 运算符不用于调用方法。它用于创建对象。如果您不尝试创建 Task.Factory 类型的新对象(正如您所了解的,这不是一个开始的类型),请省略 new 运算符。

    var t1 = Task.Factory.StartNew(() => DoSomeVeryImportantWork(1, 1500));
    

    【讨论】:

      【解决方案3】:

      Task.Factory 是一个静态属性。因此您应该使用类型名称来访问静态成员。

      public static TaskFactory Factory { get; }
      

      您可能还想看看TaskFactory 类。

      另外请记住,从 .NET Framework 4.5 开始,建议使用 Task.Run 方法来创建具有默认配置值的 Task 对象。

      var t1 = Task.Run(() => DoSomeVeryImportantWork(1, 1500));
      

      【讨论】:

        猜你喜欢
        • 2020-03-05
        • 1970-01-01
        • 1970-01-01
        • 2021-03-26
        • 2010-12-04
        • 2013-08-05
        • 1970-01-01
        • 2022-01-10
        • 1970-01-01
        相关资源
        最近更新 更多