コード例 #1
0
        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;
        }
コード例 #2
0
        public void QueueUpdate(GameTab _tab)
        {
            // das update der queue hinzufügen
            pendingUpdates.Enqueue(_tab);

            // prüfen ob ein neues update gestarten werden soll
            CheckStartUpdate();
        }
コード例 #3
0
        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();
        }