【问题标题】:C# I need progress bar to work while UI makes com callC# 我需要进度条才能在 UI 进行 com 调用时工作
【发布时间】: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


【解决方案1】:

您应该为执行方法调用创建单独的线程,这需要时间。在它返回所需数据之前,在您的 UI 线程上显示进度条。这应该可以正常工作。

即您应该从建议的三个选项中选择第一个选项。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-12
    • 2022-11-10
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多