2011-09-27 18 views
7

ho copiato questo esempio da hereCercando di conoscere le nuove funzionalità asincroni in C#

Ho visto molti esempi simili. Molti di loro dicono che stanno usando il CTP Asincrono. Sto usando Visual Studio 11 su Windows 8 anche se così non si applica. Come mostrato, l'errore dice che TaskEx non esiste. Presumo che mi manca un riferimento ma non so quale.

Questa pagina è 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 = rnd.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()); 
     } 
    } 
} 
+1

Simply rightclick-> open. L'immagine viene ridimensionata tramite css. – Femaref

+0

@Femaref: Ah, perfetto. Grazie –

+0

Basta fare clic sul link di esempio –

risposta

12

Nel CTP non siamo riusciti ad aggiungere nuove funzionalità al tipo Task così abbiamo fatto la cosa pragmatico e appena fatto un nuovo TaskEx tipo. Nella versione finale non ci sarà questo tipo; quei metodi saranno solo su Task come ti aspetteresti.

+3

Inoltre, nell'attuale anteprima di VS2011 dev, i metodi * sono * sul tipo 'Task' (se hai come target Metro o .NET 4.5). –

2

Sostituire TaskEx con Task. Nella parte superiore del file con estensione cs, avrete bisogno di:

using System.Threading.Tasks; 

La maggior parte del codice di esempio che ho visto si riferisce a TaskEx, e lo stimato signor Lippert sembra indicare che è un artefatto del loro sviluppo processi. Se si sta utilizzando l'Anteprima sviluppatore, le chiamate Esegui, Quando tutto e Ritardo sono già metodi della classe Task anziché TaskEx. Gli strumenti di rilascio dovrebbero essere gli stessi.

Problemi correlati