Windows 8中连接状态更改的事件

时间:2013-01-14 12:01:41

标签: c# windows-runtime

连接状态发生变化时是否有事件要处理?

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

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

1 个答案:

答案 0 :(得分: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();
    }
}