【问题标题】:DispatcherTimer Error调度程序计时器错误
【发布时间】:2015-01-30 09:42:40
【问题描述】:

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

我正在显示 StatusBar

  1. MYAPP(欢迎)
  2. MYAPP(通过 WIFI 连接)
  3. MYAPP(通过手机连接)

如果用户通过 Wifi 连接,则显示“MYAPP (CONNECTED VIA WIFI)”,如果用户通过蜂窝连接,则显示“MYAPP (CONNECTED VIA CELLULAR)”。

此外,它使用 DispatcherTimer() 在 5 秒后恢复到默认进度条文本“MYAPP (WELCOME)”;


所以,我执行 GetInternetConnectionProfile() ,返回 _connectedVia,传递给 Constructor 或 OnNavigatedTo 中的 GetInternetConnectionProfile(_connectedVia) 函数。

Connectivity.GetInternetConnectionProfile();
StatusBarClassObject.StatusBarGenerator(_connectedVia);

在第一次执行页面之前一切正常。

现在,每次发生网络更改(Wifi 到蜂窝或反之亦然或 wifi 到无等)时,它都会执行 NetworkStatusChanged 事件处理程序,过程与构造函数中相同。

    NetworkInformation.NetworkStatusChanged += new NetworkStatusChangedEventHandler((n) => Connectivity.GetInternetConnectionProfile());

   NetworkInformation.NetworkStatusChanged += new NetworkStatusChangedEventHandler((n) => StatusBarClassObject.StatusBarGenerator(_connectedVia));

但问题是: StatusBarCloseTimer = new DispatcherTimer(); 这次给了我错误。第一次执行这个工作正常。

“应用程序调用了一个为不同线程编组的接口。(来自 HRESULT 的异常:0x8001010E (RPC_E_WRONG_THREAD))”

我尝试使用:

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_WRONG_THREAD))”

【问题讨论】:

  • 通过 Dispatcher 也调用 Start() 怎么样?这个错误显然意味着你从错误的线程中调用了一些东西。
  • 已解决:等待CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => {}

标签: c# multithreading xaml oop windows-phone-8.1


【解决方案1】:

已解决:await CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.N‌​ormal, () => {}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多