2012-04-23 21 views
0

私のプログラムでは、ユーザーに保存フォルダを選択するようダイアログボックスを表示する必要があります。彼らが続行したいことを確認してください。はい - ワーカースレッドで早すぎるメッセージボックスが表示されない

/* Wait until user has selected a save folder */ 
do { } while (sSaveFolder == null); 

/* Cancel operation if user clicks on cancel when in folder selection window */ 
if (sSaveFolder == "<cancel>") 
{ 
    worker.ReportProgress(0, "Operation Cancelled\r\n\r\n**********\r\n"); 
    return; 
} 

/* Check for confirmation */ 
if (MessageBox.Show("Please confirm whether or not to continue.", "Do you wish to continue?", MessageBoxButtons.YesNo) == DialogResult.No) 
{ 
    worker.ReportProgress(0, "Operation Cancelled\r\n\r\n**********\r\n"); 
    return; 
} 

私は取得しています問題は、私は、一度これを実行しない]をクリックし、ワーカースレッドが終了することができるということです。

は、これは私のコードです。しかし、ワーカースレッドを再度実行するためにボタンをクリックすると、フォルダの保存ダイアログボックスと同時にメッセージボックスがポップアップします。これは明らかな理由から問題があります。だから、なぜこれが起こっているのか、それをどう解決するのか誰にも分かりますか?

メッセージボックスを[フォルダを保存]ダイアログボックスの前に移動することで問題が解決しましたが、これは奇妙な問題ですから、将来的に再度作成することを尋ねると思いました。事前に

感謝:)

+2

どこにsSaveFolderの値をリセットしますか?いいえ、あなたはやっていますか? – KingCronus

+0

ああ - そうかもしれない。私はちょうどそれをテストします。 – GeorgePotter

+1

'do ... while'ループのすぐ上にリセットしたいかもしれません。 – Cheeso

答えて

3

sSaveFolderの値がリセットされるだろうどこ私はどこでもあなたのコード内で見ることができません。

同じオブジェクトを再利用しているので、以前の値が設定されている可能性があるため、do ... whileは非常に短時間で完了し、メッセージボックスが表示されます。

ダイアログを表示する前にsSaveFolderの値をリセットすると、問題が解決されます。

+0

うん、それは問題だった。私はそれを修正し、プログラムは今働いています。ありがとう非常に:) – GeorgePotter

+0

stackoverflowが私にできるとき私は9分で答えとしてこれを受け入れるでしょう:) – GeorgePotter

+0

問題ない、うれしい私は助けることができます。 – KingCronus

関連する問題