2013-01-14 19 views
0

连接状态更改时是否有事件需要处理?Windows 8中连接状态变化的事件

例如,我的应用程序就像OutLook。我想处理一个事件,以了解何时有Internet连接,然后发送所有待处理的电子邮件。

现在我可以定期检查是否有Internet连接,但对我来说这似乎是一个糟糕的解决方案。我会用事件解决它。

回答

1

您的最佳选择是实施background task。这样,即使您的应用程序在互联网连接可用时未再打开,您也可以发送挂起的电子邮件。

当注册一个后台任务,你可以设置一个触发和配置条件时,你希望你的任务运行:

var trigger = new SystemTrigger(SystemTriggerType.InternetAvailable, false); 
var condition = new SystemCondition(SystemConditionType.InternetAvailable); 

var builder = new BackgroundTaskBuilder(); 
builder.Name = "Send pending e-mails task"; 
builder.TaskEntryPoint = "Tasks.SendPendingEmailTask"; 
builder.SetTrigger(trigger); 
builder.AddCondition(condition); 
var task = builder.Register(); 

你的后台任务必须实现IBackgroundTask接口。当任务被触发时,将调用Run方法:

public sealed class SendPendingEmailTask : IBackgroundTask 
{ 
    public void Run(IBackgroundTaskInstance taskInstance) 
    { 
     var deferral = taskInstance.GetDeferral(); 
     // send your e-mails here 
     deferral.Complete(); 
    } 
}