私のwinformアプリケーションでは、「Please wait ...」メッセージがプログレスバーまたはテキストと共に表示されます。パフォーマンス上の理由から、FormはBringToFront()、Show()、およびRefresh()を使用して開いたシングルトンであり、Hide()で閉じられます。フォームが最終的にブロックされているにもかかわらず、フォームが非表示にならない場合があります
私はこのフォームを表示して非表示にするtry ... finallyパターンを使用しています。
try
{
WaitForm.Display();
// Some code
}
finally
{
WaitForm.Hide();
}
ごくまれに、ユーザーがフォームが閉じなかったと報告しました。フォームが閉じない理由を考えてもらえますか?これが起こると、ユーザーインターフェイスは応答します。
このバグは再現できますか?私はそれがなぜ呼ばれていないのかわからない... – squelos
これは最終的にブロックのすべてのコードですか? 'WaitForm.Hide();の前にいくつかのコード行がありますか? – Steve
@squelos:finallyブロックのコードは* always *呼び出されます。 'WaitForm.Hide()'が呼び出されない唯一の方法は、 'finally'ブロックを抜ける(例外を投げてしまうかもしれない)、またはフォームを隠すことによって例外自体が発生するということです。 –