2010-07-26 233 views
0

我已閱讀關於執行異步操作的信息,並且發現可以在SQL命令執行端(即在執行SQL命令期間通過添加等待AsynchResult的等待句柄來處理)或從UI執行端執行異步操作

SQL側(通過使用SQL命令等待手柄和DELAYFOR):: http://msdn.microsoft.com/en-US/library/yws6262h%28v=VS.80%29.aspx

UI側像以下的(這是通過使用代表指向一個方法然後開始調用異步方法完成): http://msdn.microsoft.com/en-US/library/2e08f6yc%28v=VS.80%29.aspx

但我不知道在性能和運行時方面哪個更好?

任何人都可以告訴我在性能方面的差異嗎?哪種技術或線程池隊列技術更好呢?

在此先感謝

+0

澄清西隧做ü的意思是「SQL命令的執行方」? – deostroll 2010-07-26 07:40:05

+0

我編輯它,請我需要一個快速的回答 – Ahmy 2010-07-26 08:04:33

回答

1

通過「SQL邊」假設你的意思是SqlCommand對象的BeginXXX EndXXX方法,以及UI的意思只是一個委託異步執行的 - 有簡單地使用一個與其他沒有提供性能差異。兩者之間的性能差異只會與您運行的代碼有關 - SQL端只會異步執行命令,UI端可能有許多您提供的其他代碼。

在很多情況下,只需提供比SQL命令更高級別的異步操作即可。在某些情況下,例如您的數據訪問層希望一次啓動多個命令,那麼使用SqlCommand方法將會很好。

希望這是你所追求的地方。

請注意,異步執行委託(Delegate.BeginInvoke)或BeginXXX方法將使用ThreadPool線程。使用委託與線程池之間的差異正在迅速這裏概述:

http://www.toadz.dk/2010/01/delegate-begininvoke-vs-threadpool-queueuserworkitem/

+0

那麼異步委託(.BeginInvoke)和使用線程(QueueUserWorkItem)的線程池之間的區別是什麼? – Ahmy 2010-07-26 08:13:48

+0

下面是一個快速解釋:http://www.toadz.dk/2010/01/delegate-begininvoke-vs-threadpool-queueuserworkitem/ – 2010-07-26 08:18:00

+0

+1爲您的創新解釋 – Ahmy 2010-07-26 09:25:07