這2個代碼片段有什麼區別? 如果我們有以下匿名函數:直接調用匿名異步函數與使用Task.Factory之間的區別?
Func<object, Task<bool> foo = async (str) => { /*misc async code with awaits*/ return result};
什麼是直接調用它的區別是:
Task<bool> bar = foo("myparam");
,並使用一個任務:
Task<bool> bar = Task.Factory.StartNew(foo, "myparam").Unwrap();
在本質,他們都執行異步唉聲嘆氣,但親們的做法是什麼?他們都返回任務。返回的任務如何不同? (例如是一個多線程的,而其他單線程等)
'foo(「myparam」)'在當前線程中調用'foo'。用當前的任務調度程序(或任何爲工廠配置的任務調度程序)調用'StartNew'調度'foo'。 – PetSerAl
基本上同樣的問題以不同的方式提出和回答:http://stackoverflow.com/questions/34680985/what-is-the-difference-between-asynchronous-programming-and-multithreading – Kilanash
@Kilanash,閱讀後。你的話說,直接調用,將啓動一個相同的線程異步任務,而工廠,可能'產生一個單獨的線程?從我對Task的理解(以及默認的Factory)的理解中,不能保證會創建一個新的線程。 – WillFM