我读过关于执行异步操作的文章,我发现它可以在SQL命令执行端(在执行SQL命令的过程中,通过添加等待AsynchResult的等待句柄来处理)或从UI执行端(通过使用指向方法的委托,然后开始异步调用方法)来完成,如下所示:
SQL端(在SQL命令中使用wait handle和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
但我不知道在性能和运行时哪一个更好?
有没有人能告诉我在性能方面的区别?这种技术和线程池队列技术哪一个更好呢?
提前感谢
发布于 2010-07-26 16:05:26
假设您所说的“SQL端”指的是SqlCommand对象上的BeginXXX EndXXX方法,而UI只是指异步执行的委托--简单地使用其中一种方法与使用另一种方法并没有提供性能上的差异。两者之间的性能差异仅与您运行的代码有关- SQL端只会异步执行命令,而UI端可能会有许多您提供的其他代码。
在许多情况下,在比SQL命令更高的级别上提供异步操作就足够了。在某些情况下,比如您的数据访问层希望一次启动多个命令,那么最好使用SqlCommand方法。
希望这就是你想要的东西。
请注意,异步执行委托(Delegate.BeginInvoke)或BeginXXX方法将使用ThreadPool线程。使用委托和线程池之间的区别在这里快速概述:
http://www.toadz.dk/2010/01/delegate-begininvoke-vs-threadpool-queueuserworkitem/
https://stackoverflow.com/questions/3333001
复制相似问题