开发者

Trying to learn about the new async features in c#

开发者 https://www.devze.com 2023-04-08 16:30 出处:网络
I copied this example from here I have seen many similar examples.Most of them say they\'re using the Async CTP.I\'m using Visual Studio 11 on Windows 8 though so that does not apply.As shown, the er

I copied this example from here

I have seen many similar examples. Most of them say they're using the Async CTP. I'm using Visual Studio 11 on Windows 8 though so that does not apply. As shown, the error says TaskEx doesn't exist. I assume I'm missing a reference but don't know which one.

This page is http://users.zoominternet.net/~charleswatson/pic.png.

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

namespace ConsoleApplication1
{
    class Program
    {
        static Random rnd = new Random();

        static void Main(string[] args)
        {
            //Do some other heavy duty background task in this thread
            StartHotel();
            Console.WriteLine("StartHotel called..");
            Console.ReadLine();

        }

        static void StartHotel()
        {
            Console.WriteLine("Starting Hotel..");

            for (int i = 0; i < 10; i++)
            {
                string name = "Chef" + i;
                CookDish(name, "Dish" + i);
                Console.WriteLine("Asked {0} to start cooking at {1}", name, DateTime.Now.ToString());
            }
        }

        static async void CookDish(string chefName, string dish)
        {
            //Induce a random delay 
            int delay = rn开发者_StackOverflowd.Next(1000, 4000);
            //Cook is cooking - Task
            await TaskEx.Delay(delay);
            //Write the result - StuffAfterAwait
            Console.WriteLine("Chef {0} Finished at {1}", chefName, DateTime.Now.ToString());
        }
    }
}


In the CTP we were unable to add new features to the Task type so we did the pragmatic thing and just made a new TaskEx type. In the final release there will be no such type; those methods will just be on Task like you'd expect.


Replace TaskEx with Task. At the top of the .cs file, you'll need:

using System.Threading.Tasks;

Much of the sample code I've seen refers to TaskEx, and the estimable Mr. Lippert seems to be indicating that's an artifact of their development process. If you're using the Developer Preview, calls like Run, WhenAll, and Delay are already methods of the class Task rather than of TaskEx. The release tools should be the same.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号