gpt4 book ai didi

c# - 共享目标 Universal Apps Windows 10 方法

转载 作者:行者123 更新时间:2023-11-30 17:41:50 25 4
gpt4 key购买 nike

我为此苦苦挣扎了几个小时,但找不到可行的解决方案。我的应用程序是共享的目标应用程序,问题是它在运行时用户想要共享内容。

 protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
{
await OnInitializeAsync();

if (await CheckToken(args) != true) return;

if (args.PreviousExecutionState != ApplicationExecutionState.Running)
{
if (await LoadData(args) != true) return;
}

var frame = new Frame();
var navigationService = new NavigationService(_dispatcherService) { RootFrame = frame, };

Window.Current.Content = frame;
Window.Current.Activate();

navigationService.Navigate<ShareViewModel>(args.ShareOperation);
}

问题是我无法使用正在运行的应用程序的框架,因为我收到异常“编码线程...”,所以我创建了一个新框架并将其分配给 Window.Current.Content。这工作正常,但问题是用户完成共享时。我应该怎么办?看来我应该将前一帧分配给 Window.Current.Content,它被共享目标“覆盖”了吗?当我尝试这样做时,我再次遇到“编码线程”异常。如果我不这样做,那么我将无法与我的应用程序交互,因为我收到应用程序正在关闭的异常。什么场景适合作为分享对象?

编辑:我想值得一提的是,当我在 ShareViewModel 中发送消息时调用 ReportStarted() 并在完成时调用 ReportCompleted()

当我尝试返回帧时抛出异常:{“应用程序调用了为不同线程编码的接口(interface)。\r\n\r\n无法初始化应用程序的根视觉对象”}

最佳答案

我正在粘贴解决问题的解决方案。我认为这里的关键是使用

CoreWindow.GetForCurrentThread().Dispatcher

 protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args)
{
await OnInitializeAsync();

if (await CheckToken(args) != true) return;

if (args.PreviousExecutionState != ApplicationExecutionState.Running)
{
if (await LoadData(args) != true) return;
}

var frame = new Frame();
Window.Current.Content = frame;
var dispatchService = new DispatcherService() { Dispatcher = CoreWindow.GetForCurrentThread().Dispatcher };
var navigationService = new NavigationService(dispatchService) { RootFrame = frame };
navigationService.Navigate<ShareViewModel>(args.ShareOperation);
Window.Current.Activate();
}

关于c# - 共享目标 Universal Apps Windows 10 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32416209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com