接続状態が変化したときに処理するイベントはありますか?
たとえば、私のアプリはのようなものOutLook
です。イベントを処理して、インターネットに接続されていることを確認してから、保留中のすべての電子メールを送信したいと思います。
これで、インターネット接続があるかどうかを定期的に確認できますが、それは私には不十分な解決策のようです。イベントを使って解決したいと思います。
接続状態が変化したときに処理するイベントはありますか?
たとえば、私のアプリはのようなものOutLook
です。イベントを処理して、インターネットに接続されていることを確認してから、保留中のすべての電子メールを送信したいと思います。
これで、インターネット接続があるかどうかを定期的に確認できますが、それは私には不十分な解決策のようです。イベントを使って解決したいと思います。
最良の選択は、バックグラウンドタスクを実装することです。このようにして、インターネット接続が利用可能になったときにアプリが開いていなくても、保留中の電子メールを送信できます。
バックグラウンドタスクを登録するときに、タスクを実行するタイミングを構成するトリガーと条件を設定できます。
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();
}
}