【问题标题】:C# Winforms Begin/EndInvoke and IAsyncResultC# Winforms Begin/EndInvoke 和 IAsyncResult
【发布时间】:2009-09-24 07:02:17
【问题描述】:

谁能给我一个应该在 Winforms 数据库应用程序中使用异步回调的示例场景?

还有一个必须在 Winforms 数据库应用程序中使用异步回调的示例场景?

【问题讨论】:

  • “异步回调”是什么意思?是一般的异步调用还是你在考虑Begin/EndInvokeIAsyncResult
  • @Fredrik Mörk,是的,你是对的。

标签: winforms asynchronous callback


【解决方案1】:

我无法为您提供何时必须使用异步调用的示例,但一般而言,您希望以异步方式进行任何可能需要很长时间的数据库调用,以保持您的UI 响应并为用户提供取消操作的可能性。给定数据库调用的性质,它们中的大多数(如果不是全部)都符合条件。

关于实现异步的方法,我可能更喜欢使用BackgroundWorker而不是使用Begin/EndInvokeIAsyncResult

【讨论】:

  • 如果我需要从数据库中获取大量数据,我为什么需要保持我的 UI 响应。因为,UI 的下一个操作应该需要这些数据。其他的取消,应该没什么用了。
  • 而且这个唯一的取消操作可以用线程来完成。
  • @JMSA:是的,它可以用线程来完成(因此我的问题是关于澄清您是否询问Begin/EndInvoke 方法或一般的异步调用。关于使用(无论方法如何):取消可能是唯一有效的用户操作,但用户可以例如调整窗口大小。如果 UI 线程被阻塞等待 DB 响应,那将不是很好。此外,Windows 可能会开始将应用程序报告为“无响应”,这也不是很漂亮。
猜你喜欢
  • 2010-10-01
  • 1970-01-01
  • 2011-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多