根據我的理解,它們是相同的,但我很想知道是否有其他優勢。如果沒有,爲什麼團隊不願意宣佈同一事物的兩個版本?Task.Factory.StartNew <T>&Task <T> .Factory.StartNew?
回答
從MSDN文檔兩種功能:
爲TaskFactory.StartNew<TResult>
:調用StartNew在功能上等同於使用它的構造函數之一創建Task<TResult>
...
爲TaskFactory<TResult>.StartNew
:調用StartNew功能上等同於通過使用Task<TResult>
構造函數之一來創建任務...
實際上從功能的角度來看存在一些細微差別:
第一次使用Task<T>
類時,靜態構造函數會創建一個新的TaskFactory<T>
對象並將其存儲。這實際上是一個小對象,但需要的內存將保留到AppDomain的生命週期結束,但Task
的靜態構造函數只創建一個對象。
因此,如果您將使用很多類型來創建任務,請使用Task.Factory.StartNew<T>
,因爲您不會使運行時創建所有TaskFactory<T>
對象。 如果僅適用一種或兩種類型,請將Task<T>.Factory
分配給一個變量,並將其用於更簡單的代碼。
更新:正如@Kirill Shlenskiy在評論中提到的那樣,我犯了一個錯誤。所以這兩者真的沒有區別。
我想檢查你的第二點重新'TaskFactory
感謝基里爾。我犯了一個錯誤。 – Alireza
- 1. 部隊更新TGT
- 2. 是否從Task <>。Factory.StartNew/Task.Factory.ContinueWhenAll()轉換爲async/await?
- 3. 無法從AD獲得TGT
- 4. Task <>和IAsyncOperation <>
- 5. 不能設置爲空的特性「TGT」
- 6. GSSManager.createCredential如何獲取Kerberos密鑰和TGT?
- 7. 使用服務負責人獲得TGT
- 8. 由TGT創建iSCSI目標不能
- 9. 轉換IEnumerable <Task<T>>到IObservable <T>
- 10. 如何從Task.Factory.StartNew <>得到結果?
- 11. Task.Factory.StartNew <TResult>(Func <Object,TResult>,object state)編譯錯誤
- 12. 無法從LSA緩存中獲取TGT票據
- 13. 在C++上的Windows客戶端上獲取Kerberos tgt
- 14. MIT Kerberos無法在MSLSA緩存中找到TGT
- 15. sqoop導入 - GSS啓動失敗 - 無法找到任何Kerberos tgt
- 16. 儘管allowtgtsessionkey註冊表項無法檢索TGT
- 17. 錯誤與Cas SERVICE_TICKET_NOT_CREATED和TGT與JBoss 5.1.0一起銷燬.GA
- 18. 「在LSA中未找到TGT」的所有可能原因
- 19. com.fatwire.wem.sso.SSOException:無法獲取TGT。 HTTP響應代碼400
- 20. Django CAS和TGT(Ticket Granting Tickets)和服務票證驗證
- 21. 如何爲IEnumerable <Task<T>>轉換成的IObservable <T>
- 22. 如何從Task <HttpResponseMessage>返回結果,以利用Async HttpClient調用?
- 23. 使用Parallel.ForEach或填寫列表<Task>通過foreach
- 24. Task.Factory.StartNew和主UI
- 25. 通過Webstart使用Kerberos。無法從票據緩存中獲取tgt
- 26. GSSException:未提供有效憑據(機制級別:無法找到任何Kerberos tgt)
- 27. 使用在Java中爲SSH /其他應用程序獲取的TGT
- 28. 傳遞Kerberos(TGT)票證授予票證。雙跳實施是否安全?
- 29. 使用SPNEGO(Kerberos TGT)進行身份驗證時更改LDAP屬性
- 30. windows XP和unix中kerberos門票TGT和服務門票的路徑?
我更新了答案:) – Alireza