52899
参考書のにタスク、スレッドプール、パラレルと async,awaitの４っの同じようなやり方？  
のやり方が記載されているのですがつまりどれを使えばいいのでしょうか？

```

    class Program  
    {           
    
        public static async Task<int> method()
        {
            return await Task<int>.Run(() => {
                Thread.Sleep(3000);
                Console.WriteLine("finish");
                return 1;
            });
        }
    
        public static void method2(Object t)
        {
            Console.WriteLine("finish");
        }
    
        public static void method3()
        {
            Console.WriteLine("finish");
        }
    
        static void Main(string[] args)
        {
            //ThreadPool  
            ThreadPool.QueueUserWorkItem(new WaitCallback(method2),"1");
            //task
            Task task = Task.Run(new Action(method3));
            //Parallel
            Parallel.Invoke(new Action(method3));
    
            Task<int> t = method();
            Console.WriteLine(t.Result);
    
            Console.ReadKey();
        }
    }
    
```
CC BY-SA 4.0
2019-02-20T09:56:16.507
52897
2019-02-25T01:12:59.083
2019-02-25T01:12:59.083
2238
question
c#
C# 非同期処理でどのやり方を使えばいいのか知りたい。
例えば、  
「画面のダウンロードボタンを押した後に画面を固まった状態にしたくない」といった単純な用途なら、async/awaitが良いでしょう。  
これはTaskの糖衣構文です（7.0以降はもう少し抽象化してTaskに依存しなくなってますが…）。

ただし、ちゃんと使いこなそうとしたらTaskの概念、  
コンソールプログラムとWindows ControlやWPFなどUIパーツ利用プログラムの挙動の違い、  
UIパーツをnewする際の制限事項など覚える必要があります。
CC BY-SA 4.0
2019-02-20T11:52:59.757
52899
2019-02-20T11:52:59.757
25396
52897
answer