gpt4 book ai didi

c# - DispatcherTimer 错误

转载 作者:太空宇宙 更新时间:2023-11-03 10:34:43 26 4
gpt4 key购买 nike

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

我正在显示一个StatusBar:

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

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

此外,它会在 5 秒后使用 DispatcherTimer() 恢复到默认进度条文本“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(); 这次给我错误。第一次执行这个工作正常。

“应用程序调用了为不同线程编码的接口(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))”

最佳答案

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

关于c# - DispatcherTimer 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28233054/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com