0

プログレスバーフォームをロードしようとしています。ロード中にキャンセルボタンを押すと、アプリケーション全体が停止します。

以下は、プログレスバーフォームを呼び出す私のコードです。私は誰かがこれを手伝ってくれるのだろうかと思っていましたか?

Loading loader = new Loading();


    private void lockButton_Click(object sender, EventArgs e)
    {
        if (this.ddCheckBox.Checked == false)
        {
            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 - 128 bit" | this.EncryptionComboBox.Text == "AES - 192 bit" | this.EncryptionComboBox.Text == "AES - 256 bit")
                {
                    this.Hide();

                    Thread thread = null;
                    thread = new Thread(new ThreadStart(delegate() { loader.dLabel.Text = "Locking Files..."; loader.ShowDialog(); }));
                    thread.Start();

                    details.SetEncryption(this.EncryptionComboBox.Text);
4

2 に答える 2

2

これには、の代わりにBackgroundWorkerを使用する必要がありSystem.Threading.Threadます。

于 2011-09-01T13:33:12.620 に答える
0

Application.Restart()はそれをかなりうまく止めるはずです;)

ただし、真面目な話ですが、MSDN Webサイトには、このようなものに関する大量の情報があります。私はこれを使用して、少なくとも何を検索するかについてのアイデアを得るでしょう。まだわからないわけではありませんが、正しい用語(停止とキャンセルなど)を使用していることを確認するための優れた情報や、その他の情報が含まれています。

http://msdn.microsoft.com/en-us/library/aa511486.aspx

http://msdn.microsoft.com/en-us/library/ywkkz4s1.aspxを確認する と、バックグラウンドワーカーの起動方法(これに使用する必要があります)と実装方法の両方に関するすばらしいリソースが見つかります。キャンセルボタン。そのコードを盗んでプログラムに接続します。お役に立てれば!

編集:少し見て回った後、あなたが呼び出したいと思うかもしれないコードは、MSDNサイトから少しこのように見えると思います:

 private void Cancel_Click(object sender, EventArgs e)
{
    // Cancel the asynchronous operation.
    this.backgroundWorker1.CancelAsync();
}
于 2011-09-01T13:48:30.360 に答える