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

C# 共享目标通用应用程序Windows 10方法,c#,windows-10,uwp,data-sharing,C#,Windows 10,Uwp,Data Sharing,我挣扎了几个小时,找不到有效的解决办法。我的应用程序是用于共享的目标应用程序,问题在于它运行时用户想要共享内容 protected override async void OnShareTargetActivated(ShareTargetActivatedEventArgs args) { await OnInitializeAsync(); if (await CheckToken(args) != true) return;

我挣扎了几个小时,找不到有效的解决办法。我的应用程序是用于共享的目标应用程序,问题在于它运行时用户想要共享内容

 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);
        }
ShareTargetActivatedEventArgs上受保护的覆盖异步无效(ShareTargetActivatedEventArgs args)
{
等待OnInitializeAsync();
如果(等待CheckToken(args)!=true)返回;
if(args.PreviousExecutionState!=ApplicationExecutionState.Running)
{
if(wait LoadData(args)!=true)返回;
}
var frame=新帧();
var navigationService=newnavigationservice(_dispatcherService){RootFrame=frame,};
Window.Current.Content=frame;
Window.Current.Activate();
navigationService.Navigate(args.ShareOperation);
}
问题是,我无法从运行的应用程序中使用框架,因为我得到了一个异常“封送线程…”,所以我创建了一个新框架,并将其分配给Window.Current.Content。这很好,但问题是当用户完成共享时。我该怎么办?似乎我应该将上一帧分配给Window.Current.Content,它被共享目标“覆盖”,对吗?当我尝试这样做的时候,我再次得到“编组线程”异常。如果我不这样做,我就不能与我的应用程序交互,因为我得到一个异常,应用程序正在关闭。成为共享目标的合适方案是什么

编辑:我想有一点很重要,那就是我在ShareViewModel中发送消息时调用了ReportStart(),在发送完毕后调用了ReportCompleted()

尝试重新分配帧时引发异常:
{“应用程序调用了为不同线程封送的接口。\r\n\r\n未能初始化应用程序的根visual”}

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

CoreWindow.GetForCurrentThread().Dispatcher

ShareTargetActivatedEventArgs上受保护的覆盖异步无效(ShareTargetActivatedEventArgs args)
{
等待OnInitializeAsync();
如果(等待CheckToken(args)!=true)返回;
if(args.PreviousExecutionState!=ApplicationExecutionState.Running)
{
if(wait LoadData(args)!=true)返回;
}
var frame=新帧();
Window.Current.Content=frame;
var dispatchService=new DispatcherService(){Dispatcher=corewindown.GetForCurrentThread().Dispatcher};
var navigationService=newnavigationservice(dispatchService){RootFrame=frame};
navigationService.Navigate(args.ShareOperation);
Window.Current.Activate();
}

问题是在应用程序的OnWindowCreated方法中重写的调度程序。在一个地方,我使用了错误的调度程序。你能分享运行的更新代码吗。在使用share target时,我也会遇到同样的错误。另外一个问题也可以帮助你解决问题。@mistyK你能分享你的应用吗?我目前正与同样的问题作斗争problem@Skynet094donecan你能告诉我你用OnInitializeAsync编码的是什么吗?今天晚些时候,我将分享一个与“共享目标”相关的问题,我认为你们可以在这方面提供帮助。
 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();
        }