Was bringt Windows Phone 7.1 (Teil 4)
Kommentare

Scheduled Tasks kommen in zwei Variationen, die beide von der Klasse ScheduledTask abgeleitet werden, die wiederum von ScheduledAction erbt. PeriodicTask erlaubt die Realisierung eines kleinen (nicht rechenintensiven)

Scheduled Tasks kommen in zwei Variationen, die beide von der Klasse ScheduledTask abgeleitet werden, die wiederum von ScheduledAction erbt. PeriodicTask erlaubt die Realisierung eines kleinen (nicht rechenintensiven) Task, der regelmäßig ausgeführt wird. Hinter dem ResourceIntensiveTask verbirgt sich ein Task, der seltener ausgeführt wird. Dafür darf er aber mehr Speicher und Rechenleistung verbrauchen.

Abb. 4: Ein neues Agentenprojekt wird dem Projekt hinzugefügt
Abb. 4: Ein neues Agentenprojekt wird dem Projekt hinzugefügt

Scheduled Tasks werden über ein spezielles Projekt namens Windows Phone Task Scheduler Project realisiert (Abb. 4). Derartige Projekte enthalten eine Funktion namens OnInvoke, in der die eigentliche Intelligenz des Background Workers zu Hause ist (Listing 4).

Listing 4

protected override void OnInvoke(ScheduledTask task)
        {
            // If your application uses both PeriodicTask and ResourceIntensiveTask
            // you can branch your application code here. Otherwise, you don't need to.
            if (task is PeriodicTask)
            {
                // Execute periodic task actions here.
            }
            else
            {
                // Execute resource-intensive task actions here.
            }

            NotifyComplete();
        }  

Jede Windows-Phone-7.5-Anwendung darf nur einen so genannten Agenten beinhalten – allerdings je einen vom Typ PeriodicTask und ResourceIntensiveTask. Je nachdem, welcher der beiden gerade an der Reihe ist, wird OnInvoke mit einem bestimmten Parameter aufgerufen.

Intelligente Programmierer implementieren den jeweiligen Task natürlich nicht direkt in OnInvoke, sondern rufen eine Subroutine auf.

Wer seinen Periodic Agent starten will, tut dies mit dem Code aus Listing 5. Er muss sich übrigens in einer Page befinden, denn man kann den Task erst starten, wenn der Benutzer die Anwendung schon einmal gestartet hat.

Listing 5

private void StartPeriodicAgent()
        {
            PeriodicTask periodicTask = new PeriodicTask("PeriodicAgent");

            // The description is required for periodic agents. This is the string that the user
            // will see in the background services Settings page on the device.
            periodicTask.Description = "This demonstrates a periodic task.";

            // If the agent is already registered with the system,
            // call the StopPeriodicAgent helper method.
            if (ScheduledActionService.Find(periodicTask.Name) != null)
            {
                StopPeriodicAgent();
            }

            ScheduledActionService.Add(periodicTask);
        }  
Unsere Redaktion empfiehlt:

Relevante Beiträge

Meinungen zu diesem Beitrag

X
- Gib Deinen Standort ein -
- or -