Windows 8 为什么SystemTriggerType.NetworkStateChange会多次触发?
我正在Windows 8上的后台任务中检查网络状态的更改。您可以找到有关注册后台任务的确切详细信息 我已经注册了几个事件来测试哪一个最适合:Windows 8 为什么SystemTriggerType.NetworkStateChange会多次触发?,windows-8,background-process,Windows 8,Background Process,我正在Windows 8上的后台任务中检查网络状态的更改。您可以找到有关注册后台任务的确切详细信息 我已经注册了几个事件来测试哪一个最适合: BackgroundTaskManager.RegisterBackgroundTask( BackgroundTaskManager.NetworkTaskEntryPoint, Constants.NetworkAvailable, new SystemTrigger(SystemTriggerType.NetworkState
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);
为了测试,我启用飞行模式并禁用它。我得到以下事件(系统触发器/条件):
- NetworkStateChange/InternetNotAvailable
- 程序“[xxx] backgroundTaskHost.exe:Managed(v4.0.30319)“已退出,代码为1 (0x1)
- NetworkStateChange/InternetNotAvailable
- 程序“[xxx]backgroundTaskHost.exe:托管(v4.0.30319)”已退出,代码为1 (0x1)
- NetworkStateChange/InternetNotAvailable
- 程序“[xxx] backgroundTaskHost.exe:Managed(v4.0.30319)“已退出,代码为1 (0x1)李>
- NetworkStateChange/InternetNotAvailable
- 程序“[xxx] backgroundTaskHost.exe:Managed(v4.0.30319)“已退出,代码为1 (0x1)李>
- NetworkStateChange/InternetAvailable InternetAvailable (系统触发器)
- NetworkStateChange/InternetAvailable
- 节目 “[xxx]backgroundTaskHost.exe:Managed(v4.0.30319)”已与退出 代码1(0x1)李>
- NetworkStateChange/InternetAvailable
- 程序“[xxx] backgroundTaskHost.exe:Managed(v4.0.30319)“已退出,代码为1 (0x1)李>
- NetworkStateChange/InternetAvailable
- 程序“[xxx] backgroundTaskHost.exe:Managed(v4.0.30319)“已退出,代码为1 (0x1)
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;
}
我还尝试添加了一个getDeleral(),但由于没有异步代码,所以没有真正的问题。请注意,所有方法中的代码也是相同的,所有任务只注册一次。这是正常的。网络状态不仅仅包括对互联网的访问。它涵盖了网络适配器可用性、wifi连接等方面的变化。如果您只想知道此时是否可以访问internet,请使用InternetAvailable触发器。问题是:如何知道internet是否已断开(在单个事件中)?触发器的数量也取决于正在执行的代码的大小。