我正在编写 Windows Phone 8.1应用程序(WINRT)。
我正在显示 StatusBar :
如果用户通过Wifi连接,则显示“MYAPP(通过WIFI连接)”,如果用户通过手机连接,则显示“MYAPP(通过蜂窝连接)”。
此外,它使用DispatcherTimer()在5秒后恢复为默认progressbartext“MYAPP(WELCOME)”;
因此,我执行 GetInternetConnectionProfile(),返回 _connectedVia ,在构造函数或OnNavigatedTo中传递给 GetInternetConnectionProfile(_connectedVia)函数。
Connectivity.GetInternetConnectionProfile();
StatusBarClassObject.StatusBarGenerator(_connectedVia);
在第一次执行页面之前一切正常。
现在,每次网络更改(Wifi到蜂窝网络或反之亦然,无线网络等)时,它都会执行 NetworkStatusChanged eventhandler ,其执行过程与构造函数相同。< / p>
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))”
答案 0 :(得分:2)
解决:等待CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.N ormal,()=&gt; {}