C# 应用程序调用了为不同线程封送的接口。windows 8.1应用商店应用程序

C# 应用程序调用了为不同线程封送的接口。windows 8.1应用商店应用程序,c#,windows-runtime,windows-store-apps,winrt-xaml,C#,Windows Runtime,Windows Store Apps,Winrt Xaml,我正在使用C#和xaml开发一个windows store 8.1应用程序。 当我试图从代码隐藏文件更新UI时,我遇到了一个异常,即 “应用程序调用了为不同线程封送的接口” 我添加了以下代码来更新UI await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>

我正在使用C#和xaml开发一个windows store 8.1应用程序。 当我试图从代码隐藏文件更新UI时,我遇到了一个异常,即

“应用程序调用了为不同线程封送的接口”

我添加了以下代码来更新UI

 await  Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
                () =>
                {
                    statustextblk.Text = "Offline sync in progress...";
                }
                );
这很好用。但我想在离线同步完成后更新相同的文本Black。为此,我编写了下面的代码,代码如下所示

await  Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
                () =>
                {
                    statustextblk.Text = "Offline sync in progress...";
                }
                );

await SharedContext.Context.OfflineStore.ScheduleFlushQueuedRequestsAsync();
                Debug.WriteLine("Refresh started");

                if (SharedContext.Context.OfflineStore != null && SharedContext.Context.OfflineStore.Open)
                    await SharedContext.Context.OfflineStore.ScheduleRefreshAsync();


                RefreshSuccess = true;
                await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
                () =>
                {
                    statustextblk.Text = "Offline sync completed...";
                    Task.Delay(1000);
                    statustextblk.Text = "";
                }
                );
但它不会在UI中显示“脱机同步已完成…”消息

一旦方法被执行,我如何在UI中显示它

有人能帮我吗

如果您评论Task.Delay(1000),“Offline sync completed…”将在很短的时间内显示,但会立即消失,因为您设置了statustextblk.Text=“”,请提前感谢

因此,你可以在评论中提到@Raymond said。在Task.Delay(1000)之前添加修饰符'async',=>和修饰符'wait'; 您可以参考我制作的演示,如下所示:

private async void Button_Click(object sender, RoutedEventArgs e)
    {
        await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
            () =>
            {
                statustextblk.Text = "Offline sync in progress...";
            }
            );

        Debug.WriteLine("Refresh started");

        await Task.Delay(1000);

        //RefreshSuccess = true;
        await Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
        async () =>
        {
            statustextblk.Text = "Offline sync completed...";
            await Task.Delay(1000);
            statustextblk.Text = "";
        }
        );
    }

您没有等待
任务。延迟(1000)
以便下一行(清除消息)立即运行。嘿,雷蒙德。。谢谢你的回复。它甚至没有在UI中显示“脱机同步已完成…”这条消息。我评论了任务。延迟(1000);这条线也是你好,如果它解决了你的问题,请标记为答案,以便其他访问者可以参考它,谢谢!