[英]Working with TPL Using Embedded Tasks
我在一個單獨的線程上運行一個進程,以促進並發和平滑的用戶界面調用
private void ThreadedTestConnection(SqlConnection conn, bool bShowErrMsg)
{
Task<bool> asyncTestConn = Task.Factory.StartNew<bool>
(() => TestConnection(conn, bShowErrMsg));
return asyncTestConn.Result;
asyncTestConn.Dispose();
}
從UI線程。 但是,由return asyncTestConn
引起的“等待”正在阻止將UI線程釋放回GUI。 我想出了以下解決方法。 從我從GUI觸發的事件(不包括try
/ catch
塊)
private void SomeClick_Event(object sender, EventArgs e)
{
Task testConnection = Task.Factory.StartNew
(() => UtilsDB.ThreadedTestConnection(mainConn, true));
}
這可行。 也就是說,它在單獨的后台線程上運行測試時,立即將控制權返回給GUI。 我是不是做這個很愚蠢的男孩,還是這樣嗎?
注意:這是一個單獨的問題,但是與這個問題相關,我尚未獲得令人滿意的答案。
很好,您只是在啟動一個“即發即棄”任務,該任務將在線程池線程上運行-但是,在第一個示例中,您似乎期望得到一個結果(我假設是一個布爾值,指示連接測試是否成功) -第二秒鍾您將沒有任何內容-除非您的任務(例如引發事件或調用預定義的回調)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.