2010-07-26 167 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