3

私のアプリは共有のターゲット アプリであり、アプリの実行中にユーザーがコンテンツを共有したいときに問題に直面しています。「マーシャリング スレッド」例外が発生するため、実行中のアプリケーションからフレームを使用できません。

アプリケーションは、別のスレッド用にマーシャリングされたインターフェースを呼び出しました。\r\n\r\nアプリケーションのルート ビジュアルの初期化に失敗しました

App.xaml.csの私のOnStartAsyncメソッドは次のようになります。

public override async Task OnStartAsync(StartKind startKind, IActivatedEventArgs args)
{
    switch (DetermineStartCause(args))
    {
        // other cases
        case AdditionalKinds.Other:
            if (args is ShareTargetActivatedEventArgs)
            {
                var shareArgs = args as ShareTargetActivatedEventArgs;

                if (shareArgs.PreviousExecutionState != ApplicationExecutionState.Running)
                {
                    Uri webUrl = await shareArgs.ShareOperation.Data.GetWebLinkAsync();
                    Debug.WriteLine(webUrl.AbsoluteUri);

                    //shareArgs.ShareOperation.ReportStarted();
                    NavigationService.Navigate(typeof(Views.MainPage), webUrl.AbsoluteUri);
                }
                else
                {
                        await CoreApplication.Views.First().Dispatcher.RunAsync(CoreDispatcherPriority.Normal, async () =>
                        {
                            Uri webUrl = await shareArgs.ShareOperation.Data.GetWebLinkAsync();
                            var nav = NavigationServiceFactory(BackButton.Attach, ExistingContent.Exclude);
                            Window.Current.Content = new Views.ShareLaunch();
                            Window.Current.Activate();
                        });
                }
            }
            break;
    }
}

ShareTargetActivatedEventArgsアプリケーションがすでに実行されている場合など、else 条件を処理する方法がわかりません。Stackoverlow で同様の質問を見つけましたが、Template10 ライブラリを使用していません。Template10 ライブラリを使用してこのシナリオを処理する方法。

4

1 に答える 1