簡體   English   中英

使用嵌入式任務使用TPL

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM