共享目标通用应用程序 Windows 10 方法

2024-03-06

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

 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 中发送消息时报告完成()当我完成时。

当我尝试将帧分配回来时抛出异常:{“应用程序调用了为不同线程编组的接口。\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();
        }
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

共享目标通用应用程序 Windows 10 方法 的相关文章

随机推荐