私のアプリは共有のターゲット アプリであり、アプリの実行中にユーザーがコンテンツを共有したいときに問題に直面しています。「マーシャリング スレッド」例外が発生するため、実行中のアプリケーションからフレームを使用できません。
アプリケーションは、別のスレッド用にマーシャリングされたインターフェースを呼び出しました。\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 ライブラリを使用してこのシナリオを処理する方法。