【问题标题】:Executing asynchronous operations执行异步操作
【发布时间】:2011-03-20 23:11:53
【问题描述】:

我已经阅读了关于执行异步操作的信息,我发现它可以在 SQL 命令执行端(在执行 SQL 命令期间通过添加等待 AsynchResult 的等待句柄来处理)或从 UI 执行端(即通过使用指向方法的委托完成,然后开始异步调用方法),如下所示:

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

用户界面方面: http://msdn.microsoft.com/en-US/library/2e08f6yc%28v=VS.80%29.aspx

但我不知道在性能和运行时间方面哪个更好?

谁能告诉我在性能方面的差异?这种技术和线程池队列技术哪个更好?

提前致谢

【问题讨论】:

  • 澄清'sql命令执行端'是什么意思?
  • 我已经编辑了它,我需要一个快速的答案

标签: .net asynchronous threadpool


【解决方案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/

【讨论】:

  • 那么异步委托(.BeginInvoke)和使用线程的线程池(QueueUserWorkItem)有什么区别?
  • 这里有一个简单的解释:toadz.dk/2010/01/…
猜你喜欢
  • 2019-05-27
  • 2015-04-24
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
  • 2020-10-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多