gpt4 book ai didi

c# - 如何使用 WPF 后台 worker

转载 作者:IT王子 更新时间:2023-10-29 03:30:23 26 4
gpt4 key购买 nike

在我的应用程序中,我需要执行一系列初始化步骤,这些步骤需要 7-8 秒才能完成,在此期间我的 UI 变得无响应。为了解决这个问题,我在一个单独的线程中执行初始化:

public void Initialization()
{
Thread initThread = new Thread(new ThreadStart(InitializationThread));
initThread.Start();
}

public void InitializationThread()
{
outputMessage("Initializing...");
//DO INITIALIZATION
outputMessage("Initialization Complete");
}

我已经阅读了一些关于 BackgroundWorker 的文章,以及它如何让我的应用程序保持响应,而无需编写线程来执行冗长的任务,但我没有成功尝试要实现它,谁能告诉我如何使用 BackgroundWorker 来实现它?

最佳答案

  1. 添加使用

    using System.ComponentModel;
  2. 声明Background Worker :

    private readonly BackgroundWorker worker = new BackgroundWorker();
  3. 订阅事件:

    worker.DoWork += worker_DoWork;
    worker.RunWorkerCompleted += worker_RunWorkerCompleted;
  4. 实现两种方法:

    private void worker_DoWork(object sender, DoWorkEventArgs e)
    {
    // run all background tasks here
    }

    private void worker_RunWorkerCompleted(object sender,
    RunWorkerCompletedEventArgs e)
    {
    //update ui once worker complete his work
    }
  5. 在需要时运行 worker async。

    worker.RunWorkerAsync();
  6. 跟踪进度(可选,但通常很有用)

    a) 订阅ProgressChanged事件并在DoWork中使用ReportProgress(Int32)

    b) 设置 worker.WorkerReportsProgress = true;(感谢@zagy)

关于c# - 如何使用 WPF 后台 worker ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5483565/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com