C#Winforms Begin/EndInvoke和IAsyncResult

C#Winforms Begin/EndInvoke和IAsyncResult,winforms,asynchronous,callback,Winforms,Asynchronous,Callback,有谁能给我一个在Winforms数据库应用程序中应该使用异步回调的示例场景吗 还有一个示例场景,其中Winforms数据库应用程序中必须使用异步回调?我无法给出必须使用异步调用的示例,但一般来说,您希望以异步方式进行任何可能需要很长时间才能保持UI响应的数据库调用,并为用户提供取消操作的可能性。给定数据库调用的性质,大多数(如果不是全部的话)都符合条件 关于实现异步性的方法,我可能更喜欢使用BackgroundWorker,而不是使用Begin/EndInvoke和IAsyncResult我无法

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


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

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


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

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


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

您所说的“异步回调”是什么意思?通常是异步调用,还是您正在考虑使用
IAsyncResult
进行
Begin/EndInvoke
?@Fredrik Mörk,是的,您是对的。“异步回调”是什么意思?通常是异步调用,还是您正在考虑使用
IAsyncResult
进行
Begin/EndInvoke
?@Fredrik Mörk,是的,您是对的。如果我需要从数据库中获取大量数据,为什么我需要保持UI响应。因为,UI的下一个操作应该需要这些数据。除了取消之外,它应该没有任何用处。而且这个唯一的取消操作也可以用线程来完成。@JMSA:是的,它可以用线程来完成(因此我的问题是关于澄清您是询问
Begin/EndInvoke
方法还是一般的异步调用。关于使用(不管方法如何):取消可能是唯一有效的用户操作,但用户可以调整窗口大小。如果UI线程被阻止等待DB响应,这将不太好。此外,Windows可能会开始报告应用程序为“未响应”,这也不是很漂亮。如果我需要从数据库中获取大量数据,为什么我需要让我的UI保持响应。因为,UI的下一个操作应该需要这些数据。除此之外,取消操作应该没有任何用处。而且,只有取消操作可以用线程来完成。@JMSA:是的,可以用线程来完成(因此,我的问题是关于澄清您是询问
Begin/EndInvoke
方法还是一般的异步调用。关于用法(无论方法如何):取消可能是唯一有效的用户操作,但用户可以调整窗口大小。如果UI线程被阻止等待DB响应,这将不太好。此外,Windows可能会开始报告应用程序为“未响应”,这也不太好。