我正在编写一个Windows 8.1应用程序(WINRT).
我正在展示一台StatusBar
如果用户通过Wifi连接,则显示"MYAPP (通过WIFI连接)“,如果用户通过蜂窝连接,则显示"MYAPP (经蜂窝连接)”。
另外,它使用DispatcherTimer()在5秒后恢复为默认的进程条文本"MYAPP (欢迎)“;
因此,我执行GetInternetConnectionProfile(),在构造函数或OnNavigatedTo中返回传递给GetInternetConnectionProfile(_connectedVia)函数的_connectedVia,。
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 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)除外)”。
发布于 2015-01-30 12:44:44
已解决:等待CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,() => {}
https://stackoverflow.com/questions/28233054
复制相似问题