【问题标题】:How to put method in Backgroundworker如何将方法放入Backgroundworker
【发布时间】:2017-03-07 13:03:13
【问题描述】:

我已经创建了一个方法,我希望它把它放在带有进度条的 Backgroundworker 上。这是我第一次在后台工作人员上工作。

这是我的代码:

    public void WorkLoad()
    {
        string conStr, sheetName;
        conStr = string.Empty;
        //Get the name of the First Sheet.

        using (OleDbConnection kuneksyon = new OleDbConnection(Excel07ConString))
        {
            using (OleDbCommand utos = new OleDbCommand())
            {
                using (OleDbDataAdapter oda = new OleDbDataAdapter())
                {
                    utos.Connection = kuneksyon;
                    kuneksyon.Open();
                    DataTable dtExcelSchema = kuneksyon.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, null);
                    sheetName = dtExcelSchema.Rows[0]["TABLE_NAME"].ToString();
                    kuneksyon.Close();
                    DataTable dt = new DataTable();
                    utos.Connection = kuneksyon;
                    utos.CommandText = "SELECT [Engineer],[SITEID],[SITE NAME],[2G TX Status],[3G TX Status],[WO Status-LTE]  From [" + sheetName + "]";
                    kuneksyon.Open();
                    oda.SelectCommand = utos;
                    oda.Fill(dt);
                    kuneksyon.Close();
                    //Populate DataGridView.
                    ForIssuanceView.DataSource = dt;
                    ForIssuanceView.Columns.Add(" ", " ");
                }
            }
        }
    }

【问题讨论】:

  • 我们不是为您编写代码。你有更具体的问题吗?到目前为止,您做了哪些研究?
  • 先生,我做了一些研究,但我不明白如何使用 Backgroundworker.Dowork、ProgressChange 和 RunworkerChange。我希望有人向我解释。我会将它应用到我的代码中。

标签: c# progress-bar backgroundworker


【解决方案1】:

假设您的后台工作人员是班级成员:

private BackgroundWorker bw;

当你要使用它时,你创建并初始化它:

        bw = new BackgroundWorker();
        bw.WorkerReportsProgress = true;
        bw.ProgressChanged += ProgressChanged;
        bw.DoWork += DoWork;

然后你启动它:

        bw.RunWorkerAsync();

你应该提供一种方法来做实际的工作:

    private static void DoWork(object sender, DoWorkEventArgs e)
    {
        // do your actual work and report percentage whenever you find appropriate
        for (var p = 0; p < 100; p++)
        {
            bw.ReportProgress(p);
        }
    }

您还可以提供一种方法来处理百分比变化。每当您对后台工作人员执行 ReportProgress 时,都会自动调用它。请注意,它是在自己的线程中启动的,而不是您可能期望的在您的 UI 线程中启动:

    private static void ProgressChanged(object sender, ProgressChangedEventArgs e)
    {
        // inform the UI that the percentage has been changed
    }

【讨论】:

    猜你喜欢
    • 2014-08-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多