我想寫的異步代碼一個非常簡單的一點。我有一個void方法,它不會接受任何參數,它將從Windows服務中調用。我想將它踢開異步,這樣服務就不必等待方法完成。爲什麼沒有這個C#4.0異步方法被調用?
我創建了一個非常簡單的測試程序,以確保我在做編碼權,但異步方法只是不會被調用。任何人都能看到我做錯了什麼?順便說一句,我使用.NET 4.0,所以我不能使用await(這會更簡單!)。
這裏是我的整個測試樣本...
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");
}
}
}
感謝所有幫助你可以給。之前,異步方法在ThreadPool
被部署
@馬丁:哪來的'async' /'await'在上面的問題? – spender
爲什麼不使用.NET 4.5? – Rafael
@spender與「C#」關鍵字相反,他使用「異步」作爲「異步」的通用縮寫。 – Servy