【发布时间】:2017-03-30 17:24:07
【问题描述】:
我试图弄清楚当我正在处理的程序的 void 方法返回时如何确定最佳实践。基本上,该程序调用了第 3 方网格,告诉它将内容保存到 Excel 工作表中。保存网格的方法是一个void方法grid.SaveExcel(string filename, ...)。我在想它需要使用await 和async 命令,但在多个地方读到这不是最佳实践。我很好奇你将如何正确地做到这一点,因为我是 C# 中 await、async、Lamda、Invoke、Action、Task、delegate 的菜鸟,我想我只是让我自己感到困惑。我基本上知道如何打开 SQL 连接、填充网格、处理按钮事件处理程序、构建基本类等(非常基本的东西)。
我基本上想调用grid.SaveExcel 方法,然后在等待网格保存完成时更新进度条。完成后,我想继续接下来的几行代码。有人可以帮我指出正确的方向并向我展示一些代码来尝试实现这一点吗?提前致谢!
【问题讨论】:
-
grid.SaveExcel不是标准 .NET Framework 中的方法。这个从哪里来?它的定义是什么?是阻塞(同步)方法还是非阻塞(异步)方法? -
我正在为 WinForms 使用 ComponentOne 控件。这是他们的 C1FlexGrid (componentone.com/Studio/FlexGrid?platform=WinForms)。我不确定它是否阻塞。保存时间从几秒到一分钟不等,具体取决于网格中加载了多少数据。我希望能够手动增加我在保存时显示的进度条。
-
如果该方法不提供报告进度的方法,您将无法报告进度。 That method 不提供任何东西。您可以在单独的线程上运行它以避免阻塞 UI,但您不会获得进展。至于它什么时候完成,就是执行到你在调用该方法之后放置的下一条指令时。
标签: c# winforms async-await void