【问题标题】:Update progressbar's value from another thread?从另一个线程更新进度条的值?
【发布时间】:2011-07-08 09:14:22
【问题描述】:

我的表单创建了一个后台工作人员,每 6 秒检查一次。结果是 1-100,我想显示这个。

但如果我直接这样做,我会遇到一些跨线程错误,所以我在一些研究代表之后是这样做的。

我在 Form1 类中创建:

public delegate void SetProgressbarValueDelegate(int val);

但是我如何“连接它”来实际更新进度条?

谢谢

【问题讨论】:

    标签: c# delegates progress-bar backgroundworker multithreading


    【解决方案1】:

    假设您使用的是 WinForms,BackgroundWorker 类会引发 ProgressChanged 事件,该事件将自动编组回您的 UI 线程。您应该在此事件的处理程序中更新您的用户界面。

    有一些简单的例子说明如何在MSDN documentation 中使用BackgroundWorker

    【讨论】:

    • 好吧,它最初可以工作。但是如果我有一个值,让我们保持 99 并希望它成为进度条的新值,我该如何发送它?我在做(发件人为 BackgroundWorker).ReportProgress(99);在 worker_DoWork 内部,但我真的想传输数据,而不仅仅是数字(用于其他控件)
    • 抱歉,虽然我的本意是要投赞成票,但我不小心投了反对票。在编辑问题之前,我无法更改它。实在抱歉!但请编辑,我会撤销我的愚蠢行为。
    猜你喜欢
    • 1970-01-01
    • 2011-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-30
    • 2015-10-30
    • 1970-01-01
    相关资源
    最近更新 更多