using System.Windows.Forms;
public class App
{
[STAThread]
public static void Main()
{
string fname;
using (var d = new OpenFileDialog())
{
if (d.ShowDialog() != DialogResult.OK)
{
return;
}
fname = d.FileName;
}
//Application.ExitThread();
for (; ;)
;
}
}
上記のコードはファイルダイアログを示しています。ファイルを選択してを押すopen
と、forループが実行されますが、(フリーズされた)ダイアログは残ります。
コメントを外すとApplication.ExitThread()
、期待どおりにダイアログが消えます。
それは意図したとおりに機能しますか?なぜusing
ウィンドウが消えないのですか?これに関する詳細情報はどこにありますか?
いいえ、電話する必要はありませんApplication.ExitThread()
。
Application.ExitThread()
呼び出し元のスレッドのメッセージループを終了し、フリーズしたダイアログを強制的に破棄します。「それは機能します」が、フリーズの原因がわかっている場合は、ダイアログのフリーズを解除することをお勧めします。
この場合、押すopen
と、終了する機会がないクローズイベントが発生するようです。Application.DoEvents()
そのチャンスを与え、ダイアログを非表示にします。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加