Windows 8 通过回调的编组错误

Windows 8 通过回调的编组错误,windows-8,microsoft-metro,Windows 8,Microsoft Metro,调用我的回调时,我得到: 出现编组错误 什么是“编组”??以及为什么我的回调无效。请告诉我 这是密码 public Page1()//constructor { this.InitializeComponent(); NetworkInformation.NetworkStatusChanged += new Windows.Networking.Connectivity.NetworkStatusChangedEventHandler(OnNetw

调用我的回调时,我得到:

出现编组错误

什么是“编组”??以及为什么我的回调无效。请告诉我

这是密码

   public Page1()//constructor
    {
        this.InitializeComponent();
        NetworkInformation.NetworkStatusChanged += new Windows.Networking.Connectivity.NetworkStatusChangedEventHandler(OnNetworkStatusChanged);//regist callback
    }

    void OnNetworkStatusChanged(object arg)//callback method
    {
        App.mainFrame.Navigate(typeof(Page2));
    }

错误消息告诉您“导航”方法在错误的线程上执行(需要封送,以便在正确的线程上调用)

在Windows8中,与UI交互的代码应仅在UI线程上执行,回调方法(如上面的
OnNetworkStatusChanged
方法)不一定会在UI线程上被调用。要确保代码在UI线程上执行,而不是在其他线程上执行,请使用以下习惯用法:

// somewhere in your code behind, in code that definitely runs on the UI thread
// - e.g. in the OnLoaded method of your main window:
CoreDispatcher Dispatcher = Windows.UI.CoreWindow.GetForCurrentThread().Dispatcher; 


// In your call-back method:
if ((Dispatcher != null) && (!Dispatcher.HasThreadAccess))
{
    Dispatcher.RunAsync(
                Windows.UI.Core.CoreDispatcherPriority.Normal, 
                (obj, invokedArgs) => { App.mainFrame.Navigate(typeof(Page2));}, 
                this, 
                null
     );
}
else
    App.mainFrame.Navigate(typeof(Page2));

错误消息告诉您“导航”方法在错误的线程上执行(需要封送,以便在正确的线程上调用)

在Windows8中,与UI交互的代码应仅在UI线程上执行,回调方法(如上面的
OnNetworkStatusChanged
方法)不一定会在UI线程上被调用。要确保代码在UI线程上执行,而不是在其他线程上执行,请使用以下习惯用法:

// somewhere in your code behind, in code that definitely runs on the UI thread
// - e.g. in the OnLoaded method of your main window:
CoreDispatcher Dispatcher = Windows.UI.CoreWindow.GetForCurrentThread().Dispatcher; 


// In your call-back method:
if ((Dispatcher != null) && (!Dispatcher.HasThreadAccess))
{
    Dispatcher.RunAsync(
                Windows.UI.Core.CoreDispatcherPriority.Normal, 
                (obj, invokedArgs) => { App.mainFrame.Navigate(typeof(Page2));}, 
                this, 
                null
     );
}
else
    App.mainFrame.Navigate(typeof(Page2));

简而言之,“编组”是指将数据或对象转换为字节流的过程,“解编组”是将字节流转换回其原始数据或对象的反向过程。转换是通过“序列化”实现的。非常感谢!我理解什么是“编组”。但我无法理解错误和代码的相关性…我不知道它是否对你有帮助,但如果它对你有帮助,那就是为什么它是一个注释而不是答案。简单地说,“编组”指的是将数据或对象转换为字节流的过程,以及“解编组”是将字节流转换回其原始数据或对象的反向过程。转换是通过“序列化”实现的。非常感谢!我理解什么是“编组”。但我无法理解错误和代码的相关性…我不知道它是否对你有帮助,但如果它对你有帮助,那就是帮助,这就是为什么它是评论而不是回答