在类库中运行长操作并报告进度

问题描述 投票:0回答:1

我的应用程序连接到SQL数据库,从表中返回所有行,然后遍历每一行并执行一些处理。

如果这是一个图形化的Forms应用程序,我会考虑在BackgroundWorker中执行上述操作,以便不阻止UI,并从BackgroundWorker中报告进度或支持取消。

由于我可能在许多应用程序中执行相同/类似的操作,我想将SQL工作打包到类库中并从其他应用程序中调用它。

我知道我也可以在类库中使用BackgroundWorkers,但是如何将UI和调用链接到库?我怎样才能发送取消请求或报告进度备份?或者这不是正确的路线?

vb.net backgroundworker
1个回答
2
投票

虽然你可以在类库中使用BackgroundWorker,但感觉它很奇怪,因为它主要是作为UI的补充组件设计的。您也可以直接管理线程,但无论哪种方式,您仍需要提供某种方式来传达进度并允许取消。虽然你显然可以自由创建自己的模式,但基本上有three standard patterns for .NET

除非你真的需要IAsyncResult的低层控制,否则现在每个人都在使用的最常见的模式是TAP(Task / Async / Await)。使用TAP时,有一种提供进度和取消的标准方法。有关这两个主题的更多信息,请参阅official documentation(该文档中有关于这两个主题的部分)。

© www.soinside.com 2019 - 2024. All rights reserved.