c# - 在对话框中显示进度

标签 c# wpf multithreading backgroundworker progress

我有一个过程需要很长时间,我想要一个窗口来显示进度。但是,我不知道如何显示进度。

代码如下:

if (procced)
{
    // the wpf windows :
    myLectureFichierEnCour = new LectureFichierEnCour(_myTandemLTEclass);
    myLectureFichierEnCour.Show();

    bgw = new BackgroundWorker();
    bgw.DoWork += startThreadProcessDataFromFileAndPutInDataSet;
    bgw.RunWorkerCompleted += threadProcessDataFromFileAndPutInDataSetCompleted;

    bgw.RunWorkerAsync();
}

和:

private void startThreadProcessDataFromFileAndPutInDataSet(object sender, DoWorkEventArgs e)
{
    _myTandemLTEclass.processDataFromFileAndPutInDataSet(
        _strCompositeKey,_strHourToSecondConversion,_strDateField);
}

我可以调用 _myTandemLTEclass.processProgress 来获取进度提示。

最佳答案

您应该处理 ProgressChanged 事件并在那里更新您的用户界面中的进度条。

在执行工作的实际函数中(DoWork 事件处理程序),您将调用 BackgroundWorker 实例的 ReportProgress 方法指定完成任务量的参数。

BackgroundWorker example in MSDN Library是完成这项工作的简单代码片段。

关于c# - 在对话框中显示进度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1843020/

相关文章:

java - 单例、线程安全和互斥体

c# - 如何正确比较同一类的 2 个对象?

c# - 无法从 WPF 应用程序连接到 WinRT 服务器

Python:传递函数更多信息是一件坏事吗?

c# - WPF MVVM 将 TextBlock 的文本绑定(bind)到 ObservableCollection 成员

c# - WPF C# 应用程序产生两个主窗口的问题

spring - 使用 RedisQueueInboundGateway 进行多线程处理

C# 将字节数组 append 到现有文件

c# - VS 2017 ASP.NET Core 测试项目 - Microsoft.AspNetCore.Identity 缺失

c# - 为什么 Queryable.SelectMany(...) 重载接受 Func<S, IEnumerable<R>> 而不是 Func<S, IQueryable<R>>?