【问题标题】:How to run ProgressBar Form in new thread and manage it using C#?如何在新线程中运行 ProgressBar Form 并使用 C# 进行管理?
【发布时间】:2016-01-31 11:32:25
【问题描述】:

我有一个带有进度条的简单表格:

像这样:http://i.stack.imgur.com/jrM7Z.png

我想在开始硬方法之前开始进度条表单。

对于进度条,我需要新线程。

我的代码是:

        Thread myThread = new System.Threading.Thread(delegate () {
            new ProgressBarForm().Visible = true;
        });
        myThread.Start();
        hardMethodForAlongTime();

但如果我运行代码,我的进度条会滞后并且无法正常工作。

我该怎么做?而且,我可以在hardMethodForAlongTime() 之后使用myThread.Stop() 停止线程吗?或者有没有更好的解决方案?

        Thread myThread = new System.Threading.Thread(delegate () {
            new ProgressBarForm().Visible = true;
        });
        myThread.Start();
        hardMethodForAlongTime();
        myThread.Stop(); //stop?

感谢您的回复。

【问题讨论】:

  • 不,辛苦的工作应该在后台线程上完成,进度条应该留在 UI 线程上。
  • @Jens 我不能在新线程中运行hard work,因为这个hard work 使用来自实际表单的组件...
  • 首先,这听起来像是非常有缺陷的代码。也许在您的问题中添加更多代码,了解您实际在做什么。进度条可能是最少的问题。

标签: c# multithreading progress-bar


【解决方案1】:

为简单起见,请使用 BackgroundWorker。 BackgroundWorker 和 ProgressBar 有很多示例。你可以看到这个C# BackgroundWorker

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-04-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    • 1970-01-01
    • 1970-01-01
    • 2018-11-11
    相关资源
    最近更新 更多