簡體   English   中英

后台工作者和進度欄無法正常工作

[英]Background worker and progress bar not working properly

嗨,我試圖為我的加密和壓縮應用程序加載進度條。 我正在嘗試使用后台工作程序更新進度條的壓縮和加密時間,但是以某種方式,應用程序顯示了按鈕內包含的加密失敗消息框,而不是成功消息。

這是我按鈕的代碼

    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)代替==“”
  2. 您沒有工人進度事件設置
  3. 看來您是通過UI設計器添加了后台工作人員-用代碼創建這些工作人員的-更清潔
  4. kmcc049是正確的-我也看不到完整的處理程序
  5. 檢查此鏈接以獲取有關如何執行此操作的更多信息。 http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.aspx

當執行此行時, backgroundWorker1.RunWorkerAsync(); 它立即返回並執行下一行。 您需要為消息框訂閱RunWorkerCompleted事件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM