private void ExecuteSignalAsync(IGridSignal signal) { IPromise p = null; if (signal is AddMovieToGridSignal addMovieToGridSignal) { p = AddMovieToGrid(addMovieToGridSignal.Model); } else if (signal is RemoveMovieFromGridSignal removeMovieFromGridSignal) { p = RemoveMovieFromGrid(removeMovieFromGridSignal); } else { Debug.LogException(new NotImplementedException("Add Clear Queue case.")); } var tmpSignal = signal; p.Done(() => { lock (_gridSignalsQueue) { _gridSignalsQueue.Remove(tmpSignal); } CheckAndExecuteQueue(); }); }
private void EnqueueSignal(IGridSignal signal) { lock (_gridSignalsQueue) { _gridSignalsQueue.Add(signal); if (_gridSignalsQueue.Count == 1) { ExecuteSignalAsync(signal); } } }
private void DeQueueSignal(IGridSignal signal) { }