尝试从 WebView ScriptNotify 打开文件选取器时 UWP 应用程序崩溃,即使 运行 由 Dispatcher

UWP app crash when trying to open File Picker from WebView ScriptNotify even when running by Dispatcher

Reproducible repo here

我的应用程序有一个 UI 的 WebView,它使用 window.external.notify:

通知后端代码
        public MainPage()
        {
            this.InitializeComponent();

            this.web.ScriptNotify += this.Web_ScriptNotify;
            this.web.Navigate(new Uri("ms-appx-web:///index.html"));
        }

        private void Web_ScriptNotify(object sender, NotifyEventArgs e)
        {
            _ = this.Dispatcher.RunAsync(
                Windows.UI.Core.CoreDispatcherPriority.Normal, 
                async () =>
            {
                var d = new FileOpenPicker();

                // Changing UI text is okay
                this.lbl.Text = "Hello!";

                // Crash here:
                var file = await d.PickSingleFileAsync();
            });
        }

我想要执行的命令之一是打开文件选择器。但是,它因此异常 System.Runtime.InteropServices.COMException: 'Unspecified error' 而崩溃。我认为这是因为我试图从外部 UI 线程打开它,所以我已经 运行 它在 Dispatcher 中,但它仍然发生。

我该怎么办?

它崩溃是因为我没有设置 FileTypeFilter,而不是因为事件。添加此帮助:

diagOpen.FileTypeFilter.Add("*");