【发布时间】:2017-02-11 03:42:05
【问题描述】:
我有一个 C# Winforms UI,它调用 COM 对象以派生一些数据。
我希望 UI 上的进度条循环显示,以指示工作正在进行中。问题是 COM 调用是同步的,因此处理等待 COM 调用完成,因此不会调用进度条循环代码。
我应该: 1. 让COM调用异步让进度条码循环? 2. 使用第二个线程来运行进度条(这会起作用还是 UI 线程仍然会挂在 COM 调用上,因此不会刷新进度条?) 3. 更聪明的方法?
【问题讨论】:
-
只有在收到有关进度的反馈时才能显示进度。没有它,你应该如何移动进度条只是一个盲目的猜测。你没有那个,所以你充其量只能使用 ProgressBarStyle.Marquee。基本的“我没死”反馈并不比沙漏光标更有帮助。在另一个线程上创建 COM 组件也很重要,这样它就不会阻塞你的 UI,普通的工作线程还不够好,需要look like this。
标签: c# multithreading winforms asynchronous com