我正在玩新的異步CTP位,我不能讓它與服務器端或只是命令行程序(和所有的例子是WPF或Silverlight的)工作。例如,像一些瑣碎的代碼:立即等待立即移動到下一個語句
class Program {
static void Main() {
Program p = new Program();
var s = p.Ten2SevenAsync();
Console.WriteLine(s);
}
private async Task<int> Ten2SevenAsync() {
await TaskEx.Delay(10000);
return 7;
}
}
返回並打印System.Threading.Tasks.Task
1 [System.Int32]`,而不是等待10秒,並返回圖7(如我所期望的)。必須是明顯的我缺少的東西。
@Felix - 是的,謝謝,我很熟悉。它通過退出實際方法起作用。如果您退出「Main」(只有工作線程/任務),則會丟失進程。它不是***的目的就是像同步代碼一樣行事* - 它只是爲了方便寫同步代碼。 – 2011-05-31 06:15:18
@Felix - 如果你「等待」,你只能得到一個「int」。但是,如果你'等待'你已經退出'Main()' - * boom *;沒有更多的過程。強調:「等待」意味着「將此作爲回調」,***不會***「阻止,直到完成」。但是,您的代碼示例(問題)***不會顯示***'Main'作爲'async'方法 - 因此任何異步使用都必須是明確的。說實話,無論如何,將'Main'設置爲'async'方法是一個壞主意。 – 2011-05-31 06:17:19
對不起;我誤解了你說的話......我刪除了我的愚蠢評論,並將其標記爲答案:) – Felix 2011-05-31 06:17:56