![](/img/trans.png)
[英]Why is Window.ShowDialog not blocking in TaskScheduler Task?
[英]Why Window.ShowDialog runs the application?
我嘗試在runnig wpf應用程序之前打開對話框窗口:
public class Program
{
[STAThread]
public static void Main(string[] args)
{
var app = new App();
var win = new MainWindow();
if (win.ShowDialog().GetValueOrDefault())
{
app.Run();
}
}
}
class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
var win = new Window1();
win.Show();
}
}
為什么win.ShowDialog()運行應用程序(執行app.OnStartup)? 但是,win.Show()無法運行該應用程序
[STAThread]
public static void Main(string[] args)
{
var app = new App();
var win = new MainWindow();
win.Show();
app.Run();
}
為什么會這樣呢???
謝謝
ShowDialog
開始其自己的消息循環。 它的作用與Application.Run
幾乎相同,並且由於您已經創建了該應用程序的實例,因此已經發送了啟動消息(運行,分派),並將由ShowDialog
的消息循環(分派器)進行解釋。 Show
基本上僅將消息發送到隊列,因此除非有消息循環處理消息,否則它不會執行任何操作。
如果要在注冊啟動之前顯示對話框,請不要在顯示對話框之前創建應用程序實例。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.