我正在尝试检查Windows 8后台任务中的网络状态更改。您可以找到有关注册后台任务的确切详细信息on msdn。
我已经注册了几个测试哪个事件最合适:
BackgroundTaskManager.RegisterBackgroundTask(
BackgroundTaskManager.NetworkTaskEntryPoint,
Constants.NetworkAvailable,
new SystemTrigger(SystemTriggerType.NetworkStateChange, false),
new SystemCondition(SystemConditionType.InternetAvailable));
BackgroundTaskManager.RegisterBackgroundTask(
BackgroundTaskManager.NoNetworkTaskEntryPoint,
Constants.NetworkUnAvailable,
new SystemTrigger(SystemTriggerType.NetworkStateChange, false),
new SystemCondition(SystemConditionType.InternetNotAvailable));
BackgroundTaskManager.RegisterBackgroundTask(
BackgroundTaskManager.InternetTaskEntryPoint,
Constants.InternetAvailable,
new SystemTrigger(SystemTriggerType.InternetAvailable, false),
null);
测试我启用飞行模式并禁用它。我得到以下事件(systemtrigger / condition):
所以我得到NetworkStateChange,条件不可用4次,条件可用4次,InternetAvailable一次(这是正确的)。
在后台任务中,我只做以下代码测试:
public void Run(IBackgroundTaskInstance taskInstance)
{
// keep track that we're no longer connected
Debug.WriteLine("Background " + taskInstance.Task.Name + " Starting...");
ApplicationData.Current.LocalSettings.Values[BackgroundTaskManager.NetworkConnectedKey] = true;
}
我也尝试添加GetDeferral(),但由于没有异步代码,因此没有真正的问题。请注意,所有方法中的代码也相同,并且所有任务仅注册一次。