Backgroundworker没有开火

时间:2013-10-31 18:08:27

标签: c# winforms

public Main()
{
     backgroundWorker1.DoWork += new DoWorkEventHandler(backgroundWorker1_DoWork);
}

private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
{
       //Do Work
}



private void Start()
{
       backgroundWorker1.RunWorkerAsync();  //This works perfectly





     //////////This isthe offending code////////////
        try
        {


            string path = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + "\\" + "FileName.ini";

            using (var stream = File.Create(path)) { }
            File.WriteAllText(path, "Text to write");
            file = txtFilePath.Text;
        }

        catch (Exception ex)
        {

            MessageBox.Show(
                "Error saving configuration file.");
        }


       //////////////////////////////////////////


       backgroundWorker1.RunWorkerAsync();  //If moved here it does not fire!

       //Program contines here...


}

不确定问题是什么。

2 个答案:

答案 0 :(得分:3)

我可以在这里想到两件事。

  1. 没有调用Start方法(但是你说你可以调试它,所以这不是真正的问题吗?)
  2. 后台工作者是一个后台工作者线程,如果前台线程在它开始之前就结束了;即使突然,它也会结束。
  3. 编辑1:

    您可以尝试以下方法吗?

    private void Start()
    {
       backgroundWorker1.RunWorkerAsync();  //This works perfectly
       Thread.Sleep(10000);
       ...
       ...
       // rest of your code.
    

答案 1 :(得分:0)

尝试添加此行:

bool running = backgroundWorker1.IsBusy();

RunWorkerAsync()被召唤之后。并使用调试器或打印消息检查其值。 这将指示线程的状态 - 我怀疑它立即完成了它的工作(?)

相关问题