Task

http://www.cnblogs.com/czllfy/archive/2011/04/15/2016733.html

        //没有返回值
            //定义 Task StartNew(Action action);
       //Task.Factory.StartNew 相当于Task.Run
var t1 = Task.Factory.StartNew(() => Console.WriteLine("Task Created!")); Console.WriteLine(t1.Status); //有返回值 //定义 Task<TResult> StartNew<TResult>(Func<TResult> function); var task = Task.Factory.StartNew<string>(() => "Task Created!"); Console.WriteLine(task.Result); Console.WriteLine(t1.Status); Console.WriteLine(t1.Status); var task = new Task<string>(() => "Task Created!"); Console.WriteLine(task.Status); task.Start();//异步执行 Console.WriteLine(task.Status); Console.WriteLine(task.Result); Console.WriteLine(task.Status); var task = new Task<string>(() => "Task Created!"); task.RunSynchronously();//同步执行 Console.WriteLine(task.Result); var task = Task.Factory.StartNew(state => "hello " + state, "Mike"); Console.WriteLine(task.AsyncState); Console.WriteLine(task.Result); var tasks = new Task[3]; for (int i = 0; i < tasks.Length; i++) { int taskIndex = i; tasks[i] = Task.Factory.StartNew(() => { int seed = Guid.NewGuid().GetHashCode(); int waitTime = new Random(seed).Next(10, 100); Thread.Sleep(waitTime); Console.WriteLine("Task{0} Finished", taskIndex); }); } Task.WaitAny(tasks);//等待某一个任务完成 Console.WriteLine("已有任务完成");
     static void GetUrlLength(string result)
        {
            Console.WriteLine("现在时间为:"+DateTime.Now.Ticks + ",长度为:" + result.Length);
        }

        static void AccessUrlForNet5Async()
        {
            var client = new WebClient();
            //原型为 Task<string> DownloadStringTaskAsync(string address);
            var w1 = client.DownloadStringTaskAsync("http://msdn.microsoft.com/zh-tw").GetAwaiter();
            w1.OnCompleted(() =>
            {
                GetUrlLength(w1.GetResult());
            });

            //GetUrlLength(await client.DownloadStringTaskAsync("http://msdn.microsoft.com/"));

        }
            var client = new WebClient();
            var t1 = client.DownloadStringTaskAsync("http://msdn.microsoft.com/zh-tw");
            t1.ContinueWith(t =>
            {
                GetUrlLength(t1.Result);
            });
Task<int> task = Task.Run(() =>Enumerable.Range(1,500000).Count(n=>(n%3)==0));
Console.WriteLine("500000以内 能整除3的个数有:" + task.Result);//task未完成时,查询Result会封锁当前线程
public static void Main()
   {
        Task<Double>[] taskArray = { Task<Double>.Factory.StartNew(() => DoComputation(1.0)),
                                     Task<Double>.Factory.StartNew(() => DoComputation(100.0)), 
                                     Task<Double>.Factory.StartNew(() => DoComputation(1000.0)) };

        var results = new Double[taskArray.Length];
        Double sum = 0;
        
        for (int i = 0; i < taskArray.Length; i++) {
            results[i] = taskArray[i].Result;
            Console.Write("{0:N1} {1}", results[i], 
                              i == taskArray.Length - 1 ? "= " : "+ ");
            sum += results[i];
        }
        Console.WriteLine("{0:N1}", sum);
   }

   private static Double DoComputation(Double start)
   {
      Double sum = 0;
      for (var value = start; value <= start + 10; value += .1)
         sum += value;

      return sum; 
   }
原文地址:https://www.cnblogs.com/rockywood/p/6413349.html