【发布时间】:2017-01-05 04:53:41
【问题描述】:
我有一个使用下面代码的课程。另外我正在使用另一个类来检查我的网络连接的可用性。这个类为此提供了一个事件,我用它来启动和停止计时器。
如果事件被触发,我总是会收到一条错误消息
应用程序调用了为不同线程编组的接口
public class ViewModel : BindableBase
{
private DispatcherTimer timerUpdate = null;
public ViewModel()
{
NetworkAvailabilty.Instance.NetworkAvailabilityChanged += OnNetworkAvailabilityChanged;
timerUpdate = new DispatcherTimer();
timerUpdate.Interval = TimeSpan.FromMinutes(15);
timerUpdate.Tick += timerUpdate_Tick;
if (NetworkAvailabilty.Instance.IsNetworkAvailable)
{
timerUpdate.Start();
}
}
private void timerUpdate_Tick(object sender, object e)
{
// do something
}
public void OnNetworkAvailabilityChanged(object source, EventArgs e)
{
if (NetworkAvailabilty.Instance.IsNetworkAvailable)
{
timerUpdate.Start();
}
else
{
timerUpdate.Stop();
}
}
}
所以经过一番研究,我使用以下代码解决了这个问题:
public void OnNetworkAvailabilityChanged(object source, EventArgs e)
{
if (NetworkAvailabilty.Instance.IsNetworkAvailable)
{
Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
timerUpdate.Start();
});
}
else
{
Windows.ApplicationModel.Core.CoreApplication.MainView.CoreWindow.Dispatcher.RunAsync(CoreDispatcherPriority.Normal,
() =>
{
timerUpdate.Stop();
});
}
}
但该问题的背后是什么?这部分代码如何防止出现此错误消息? 即使在这里Visual Studio告诉我我应该考虑在Windows.ApplicationModel前面使用await.....
【问题讨论】:
标签: c# events async-await uwp