有異步方法FuncAsync
和任務對象t。 兩者都在做同樣的事情,都使用線程池。 這兩種策略有什麼區別?異步任務vs任務
class Program
{
private static async Task<int> FuncAsync(string str)
{
string s = await Task.Run(() =>
{
Console.WriteLine("{0} <- Pooled? ID -> {1}", Thread.CurrentThread.IsThreadPoolThread, Thread.CurrentThread.ManagedThreadId);
// Thread.Sleep(1000);
return str;
});
return s.Length;
}
public static void Main(string[] args)
{
Task<int> z = FuncAsync("Text");
Console.WriteLine(z.Result);
Task<int> t = Task.Run(() =>
{
Console.WriteLine("{0} <- Pooled? ID -> {1}", Thread.CurrentThread.IsThreadPoolThread, Thread.CurrentThread.ManagedThreadId);
// Thread.Sleep(1000);
return "Text".ToString().Length;
});
Console.WriteLine(t.Result);
Thread.CurrentThread.Join(1000);
Console.ReadLine();
}
}
我認爲,隨着異步方式等待結果,並不能接近完成沒有任務, 與任務 - 線程被背景和可能沒有完成任務被關閉。
沒有太多,除非您有'任務'的情況下使用匿名方法和更多管道代碼。 – Mrchief 2014-10-06 14:07:37
聽起來像你只是需要閱讀'async/await'的介紹教程。 – Servy 2014-10-06 14:15:26
@Servy我認爲是)) – 2014-10-06 14:21:32