WPF 应用未从窗口运行,使用选项打开

WPF app not running from windows open with option

提问人:anubis 提问时间:11/9/2023 更新时间:11/9/2023 访问量:61

问:

我创建了一个wpf 。处理某些类型文件的 Net6 应用程序 它按从打开的文件对话框中获取的路径加载文件 但我也想从寡妇浏览器打开文件 所以我做了一个启动事件来捕捉StartupEventArgs

 void App_Startup(object sender, StartupEventArgs e)
    {
        if (e.Args.Length == 1)
        {
            string filePath = e.Args[0];

            MySF.Openfrompath(filePath);
          
            StudioWindow studioWindow = new();

            StudioWindow.mySceneviewModel.myScene.GetBoneRelations();

            studioWindow.Show();
            StudioWindow.mySceneviewModel.RefreshView();
            StringBuilder sb = new();
            sb.AppendLine(
                $"A new Scene opened {StudioWindow.mySceneviewModel.myScene.MyName} for {StudioWindow.TargetedGame.ToString()}"
            );
            sb.AppendLine($"Path : {StudioWindow.mySceneviewModel.myScene.MyPath}");
            sb.AppendLine(StudioWindow.mySceneviewModel.myScene.GetListCounts());

            Logger.Log(sb.ToString(), "A New Scene Opened");

            MyServices.SaveRecentlyOpenedFile(filePath);
        }
        else
        {
            Welcome Window = new();

            Window.Show();
        }
    }

在这里我检查是否有命令行参数将运行 , 欢迎窗口有一个打开的文件对话框,该对话框获取文件路径,然后运行然后显示Welcome WindowMySF.Openfrompath(filePath); Studio Window

问题是,如果有来自“打开方式”的命令行参数,则不会显示 StudioWindow

如果我在调试器配置文件中将文件路径添加为命令行参数,则应用将按预期工作 如果我在这里放一个 MessageBox

           string filePath = e.Args[0];
           MessageBox.Show(filePath);
           MySF.Openfrompath(filePath);

并使用“打开方式”,MessageBox 将显示,但 StudioWindow 仍不会显示

.NET WPF 可视化工作室

评论

0赞 wenbingeng-MSFT 11/10/2023
此代码看起来不错。但可能存在一些阻塞问题。您可以尝试使用 StudioWindow 延迟执行,直到应用程序完全初始化并准备好显示窗口。为此,您可以使用Dispatcher计划代码在UI线程上运行。

答: 暂无答案