0

我正在编写一个 .NET Windows 窗体应用程序,用于导入大量数据并在每次导入时进行各种计算。为此,我创建了一个“主要”工作者和几个“子”工作者。

导入作业都列在 MySql 数据库中,我设置了一个函数来检查作业是否存在。

我需要知道的是,在童工完成工作后,控制权转移到哪里?他们是否需要再次调用主要工作人员以使其运行并将工作分配给子工作人员?

表单加载事件调用主要工作人员。因此,如果我第一次运行我的主要工作人员并在子级别启动工作,主要工作人员会再次将控制权传递给表单加载吗?

我无法进行测试运行,因为我的每个导入作业都需要花钱(用于 API 使用/点击)。所以我想在进行测试运行之前尽可能多地编写应用程序。

4

1 回答 1

3

是的,一旦开始后台工作,控制权就会返回到调用方法,而工作会在另一个线程上处理。

您可以创建一个事件处理程序,在后台工作完成时通知您。

    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        if (e.Cancelled == true)
        {
            resultLabel.Text = "Canceled!";
        }
        else if (e.Error != null)
        {
            resultLabel.Text = "Error: " + e.Error.Message;
        }
        else
        {
            resultLabel.Text = "Done!";
        }
    }

可以在此处找到完整的使用示例:

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

于 2012-07-11T22:33:29.357 回答