1. ホーム
  2. c#

C#を使用した.NET 4.0のTask.Runの代替メソッドは何ですか?

2023-09-27 05:52:29

質問

このプログラムを実行すると、シンタックスエラー "System.Threading.Tasks.task does not contain a definition for Run." が発生します。

私はVB 2010 .NET 4.0を使用しています。 .net 4.0のRunのための任意のアイデア?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

namespace ChatApp
{
class ChatProg
{
    static void Main(string[] args)
    {
        Task<int> wakeUp = DoWorkAsync(2000,"Waking up");
        Task.WaitAll(wakeUp);
    }

    static Task<int> DoWorkAsync(int milliseconds, string name)
    {

        //error appears below on word Run
        return Task.Run(() =>
            {
                Console.WriteLine("* starting {0} work", name);
                Thread.Sleep(milliseconds);
                Console.WriteLine("* {0} work one", name);
                return 1;
            });
    }
}
}

どのように解決するのですか?

以下のように表示されます。 Task.Factory.StartNew<T> のように見えますが、これはあなたが求めているものです。

return Task.Factory.StartNew<int>(() => {
    // ...
    return 1;
});

コンパイラは戻り値の型を推論することができるので、これもうまくいきます。

return Task.Factory.StartNew(() => {
    // ...
    return 1;
});