Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/244.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 调度程序错误_C#_Multithreading_Xaml_Oop_Windows Phone 8.1 - Fatal编程技术网

C# 调度程序错误

C# 调度程序错误,c#,multithreading,xaml,oop,windows-phone-8.1,C#,Multithreading,Xaml,Oop,Windows Phone 8.1,我正在编写一个Windows Phone 8.1应用程序(WINRT)。 我正在显示一个状态栏: MYAPP(欢迎) MYAPP(通过WIFI连接) MYAPP(通过手机连接) 如果用户通过Wifi连接,则显示“MYAPP(通过Wifi连接)”;如果用户通过蜂窝连接,则显示“MYAPP(通过蜂窝连接)” 此外,它使用Dispatchermer()在5秒后恢复为默认progressbartext“MYAPP(WELCOME)” 因此,我执行GetInternetConnectionProfile

我正在编写一个Windows Phone 8.1应用程序(WINRT)。

我正在显示一个状态栏:

  • MYAPP(欢迎)
  • MYAPP(通过WIFI连接)
  • MYAPP(通过手机连接)
  • 如果用户通过Wifi连接,则显示“MYAPP(通过Wifi连接)”;如果用户通过蜂窝连接,则显示“MYAPP(通过蜂窝连接)”

    此外,它使用Dispatchermer()在5秒后恢复为默认progressbartext“MYAPP(WELCOME)”


    因此,我执行GetInternetConnectionProfile(),返回\u connectedVia,传递到构造函数中的GetInternetConnectionProfile(\u connectedVia)函数或OnNavigatedTo

    Connectivity.GetInternetConnectionProfile();
    StatusBarClassObject.StatusBarGenerator(_connectedVia);
    
    在第一次执行页面之前,一切正常

    现在,每次网络更改hanppens(Wifi到蜂窝或反之亦然或Wifi到无等),它都会执行NetworkStatusChanged eventhandler,执行过程与构造函数中相同

        NetworkInformation.NetworkStatusChanged += new NetworkStatusChangedEventHandler((n) => Connectivity.GetInternetConnectionProfile());
    
       NetworkInformation.NetworkStatusChanged += new NetworkStatusChangedEventHandler((n) => StatusBarClassObject.StatusBarGenerator(_connectedVia));
    
    但问题是:
    StatusBarCloseTimer=new Dispatchermer()这次给了我一个错误。第一次执行此操作效果良好

    “应用程序调用了为不同线程封送的接口。(HRESULT的异常:0x8001010E(RPC_E_错误的_线程))”

    我尝试使用:

    await CoreDispatcherObject.RunAsync(Windows.UI.Core.CoreDispatcherPriority.Normal, () =>
            {
             DispatcherTimerInit();
            });
    
    
    
    private void DispatcherTimerInit()
                {
            //  throw new NotImplementedException();
                StatusBarCloseTimer = new DispatcherTimer();
                StatusBarCloseTimer.Interval = TimeSpan.FromMilliseconds(3000);
                StatusBarCloseTimer.Tick += StatusBarCloseTimer_Tick;
                }  
    
    但是现在
    StatusBarCloseTimer.Start()给了我相同的错误:
    
    “应用程序调用了为不同线程封送的接口。(HRESULT的异常:0x8001010E(RPC_E_错误_线程))”已解决:等待CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.N‌​Normal,()=>{}

    也通过Dispatcher调用Start()如何?此错误显然意味着您从错误的线程调用了某些内容。已解决:wait CoreApplication.MainView.corewindown.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,()=>{}