后台工作器和进度条不能正常工作

本文关键字:工作 常工作 不能 后台 | 更新日期: 2023-09-27 18:06:48

我试图有一个进度条加载我的加密和压缩应用程序。我试图使用后台工作器来更新进度条所花费的时间进行压缩和加密处理,但不知何故,应用程序显示加密失败的消息框,我已经包含在按钮内,而不是一个成功。

这是我的按钮的代码
    private void lockButton_Click(object sender, EventArgs e)
    {
        if (this.passwordtextBox.Text == "")
        {
            MessageBox.Show("Please enter a password!");
        }
        else if (this.retypeTextBox.Text == "")
        {
            MessageBox.Show("Please retype password!");
        }
        else if (this.passwordtextBox.Text == this.retypeTextBox.Text)
        {
            details = new Details();
            details.SetPassword(this.passwordtextBox.Text);
            if (this.EncryptionComboBox.Text == "AES")
            {
                details.SetEncryption(this.EncryptionComboBox.Text);
                if (details.GetResult() == true)
                {
                    // Start the background worker
                    backgroundWorker1.RunWorkerAsync();
                }
                if (details.GetResult() == true)
                {
                    MessageBox.Show("Lock Success!");
                }
                else
                {
                    MessageBox.Show("Lock Unsuccess! Please try again");
                }
            }
        }
        else
        {
            MessageBox.Show("The password and verified password does not match!");
        }
    }

这是我的后台工作代码

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        //declare lockcontroller to be used
        LockController lControl = new LockController();
        //run zipfile method and store result to fName
        lControl.compress(ifile, details);
        lControl.Encrypt(details);
        lControl.LockCleaner(details);
        int i = 100;
        // Report progress to 'UI' thread
        backgroundWorker1.ReportProgress(i);
        // Simulate long task
        System.Threading.Thread.Sleep(0000);            
    }

我想知道哪里出了问题。

后台工作器和进度条不能正常工作

  1. 使用string. isnullorempty (string)代替something == "
  2. 你没有工作进程事件设置
  3. 似乎你通过UI设计器添加了后台工作器-在代码中创建这些-更干净
  4. kmcc049是正确的-我也没有看到一个完整的处理程序
  5. 查看此链接以获取有关如何做到这一点的更多信息。http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

执行backgroundWorker1.RunWorkerAsync();它立即返回并执行下一行。您需要为您的消息框订阅RunWorkerCompleted事件