c# - 调度程序计时器错误

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

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

我正在显示一个状态栏:

  1. 我的应用程序(欢迎)
  2. MYAPP(通过WIFI连接)
  3. MYAPP(通过手机连接)

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

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


因此,我执行 GetInternetConnectionProfile() ,返回 _connectedVia,传递给构造函数或 OnNavieratedTo 中的 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(); 这次给了我错误。第一次执行效果很好。

“应用程序调用了为不同线程编码的接口(interface)。(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(); 给了我同样的错误: “应用程序调用了为不同线程编码的接口(interface)。(HRESULT 异常:0x8001010E (RPC_E_WRONG_THREAD))”

最佳答案

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

关于c# - 调度程序计时器错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28233054/

相关文章:

c# - 如何加入 2 个字符串列表,其中 Key 与 Linq 匹配和 SUM

C# : Switch between power plans

c++ - 如何在 Boost/C++ 实现中控制线程池

c# - 如何关闭包含对 NetworkStream.Read 的阻塞调用的线程

wpf - 30 行 WPF 应用程序泄漏内存

c# - 如何用 C# 将图像发布到 Twitter

C# 数组和指针

c# - 两个线程之间是否交换数据?

c# - WPF 窗体的布局 - 水平列表框

c# - WPF 控件和边距与窗口大小成比例