我使用here所描述的进程内机制(通过激活OnBackgroundActivated
)开发了边缘浏览器扩展(本机消息传递)。在OnBackgroundActivated
内,或者在已建立的应用服务连接的OnAppServiceRequestReceived
中更具体,我正在尝试呼叫Windows.System.Launcher.LaunchFileAsync(IStorageFile)
。这似乎不会发生在UI-Thread上(尽管它在调试模式下可以使用调试器工作)。
我面临的问题是,应用程序是无头的,因此没有CoreWindow.GetForCurrentThread().Dispatcher
,也无法从Window.Current
检索调度程序。
即使在发布模式下还是没有连接调试器,如何强制{-1}}在UI-Thread上执行?
我知道我可以简单地执行以下操作:
LaunchFileAsync
但我的问题是在{-1}}的上下文中抓住了 await Dispatcher.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, (async () =>
{
bool success = await Windows.System.Launcher.LaunchFileAsync(shortcut);
await args.Request.SendResponseAsync(new ValueSet {
{ "message", "Launched File: " + success.ToString() }
});
}));
引用。
如何实现这一目标?它甚至可能还是我需要一个完全信任的Win32桌面桥?
即使使用
Dispatcher
如果没有附加调试器,不起作用。我很好奇是否可以在没有Win32桌面桥的无头UWP应用程序中调用LaunchFileAsync。
答案 0 :(得分:0)
你是对的 - 你需要建立一个完全信任的Win32桌面桥。 Dispatcher不会在OnAppServiceRequestReceived
上下文中公开。所以你无法启动你想要的任何东西。