尝试从 WebView ScriptNotify 打开文件选取器时 UWP 应用程序崩溃,即使 运行 由 Dispatcher
UWP app crash when trying to open File Picker from WebView ScriptNotify even when running by Dispatcher
我的应用程序有一个 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("*");
我的应用程序有一个 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("*");