Próbuję napisać naprawdę prosty kod asynchroniczny. Mam metodę void, która nie przyjmuje żadnych parametrów, które mają być wywołane z usługi Windows. Chcę to zsynchronizować tak, aby usługa nie musiała czekać, aż metoda się zakończy.Dlaczego ta asynchroniczna metoda C# 4.0 nie jest wywoływana?
Stworzyłem bardzo prostą aplikację testową, aby upewnić się, że robię prawo do kodowania, ale metoda asynchroniczna po prostu nie jest wywoływana. Czy ktoś może zobaczyć, co zrobiłem źle? Używam przy okazji .NET 4.0, więc nie mogę się już doczekać (co byłoby o wiele prostsze!).
Oto cała moja próbka testowa ...
using System;
using System.Threading;
namespace AsyncCallback {
internal class Program {
private static void Main(string[] args) {
Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - About to ask for stuff to be done");
new Action(DoStuff).BeginInvoke(ar => StuffDone(), null);
Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - Asked for stuff to be done");
}
private static void StuffDone() {
Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - Stuff done");
}
private static void DoStuff() {
Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - Starting to do stuff");
Thread.Sleep(1000);
Console.WriteLine(DateTime.Now.ToLocalTime().ToLongTimeString() + " - Ending doing stuff");
}
}
}
Dzięki za wszelką pomoc można dać.
@Martin: gdzie jest 'async' /' await' w pytaniu powyżej? – spender
Dlaczego nie używać .NET 4.5? – Rafael
@spender Używał "async" jako ogólnego skrótu celu "asynchroniczny" w przeciwieństwie do słowa kluczowego C#. – Servy