private void CheckStartUpdate() { // falls ein spiel gespielt wird, oder ein update läuft, // wird kein neues update gestartet if (State != LauncherState.IDLE) { return; } // sind keine updates eingereiht => nichts updaten if (pendingUpdates.Count == 0) { return; } currentUpdate = pendingUpdates.Dequeue(); // events setzen updateWorker.DoWork += currentUpdate.OnCheckForUpdates; updateWorker.ProgressChanged += currentUpdate.OnProgressChanged; updateWorker.RunWorkerCompleted += currentUpdate.OnUpdateCompleted; updateWorker.RunWorkerCompleted += updateWorker_RunWorkerCompleted; // update starten updateWorker.RunWorkerAsync(updateWorker); State = LauncherState.GAME_UPDATING; }
public void QueueUpdate(GameTab _tab) { // das update der queue hinzufügen pendingUpdates.Enqueue(_tab); // prüfen ob ein neues update gestarten werden soll CheckStartUpdate(); }
void updateWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { // worker resetten updateWorker.DoWork -= currentUpdate.OnCheckForUpdates; updateWorker.RunWorkerCompleted -= currentUpdate.OnUpdateCompleted; updateWorker.RunWorkerCompleted -= updateWorker_RunWorkerCompleted; updateWorker.ProgressChanged -= currentUpdate.OnProgressChanged; // launcher state resetten currentUpdate = null; State = LauncherState.IDLE; // prüfen ob das nächste Update starten soll CheckStartUpdate(); }