public ProducerConsumerViewModel(IModelMessenger logger, IDispatcher dispatcher) { if (logger == null) { throw new ArgumentNullException(nameof(logger)); } Results = new ObservableCollection <TaskResult>(); _producer = new Producer(logger); _dispatcher = dispatcher ?? throw new ArgumentNullException(nameof(dispatcher)); _isWorking = false; StartCommand = new RelayCommand(() => { _isWorking = true; _producer.Start(); UpdateCommands(); }, () => { return(!_isWorking); }); StopCommand = new RelayCommand(() => { _isWorking = false; _producer.Stop(); UpdateCommands(); }, () => { return(_isWorking); }); ClearCommand = new RelayCommand(() => { Results.Clear(); UpdateCommands(); }, () => Results.Any()); logger.Register(this, Work); }
public Producer(IModelMessenger messenger) { _messenger = messenger; _queue = new Queue <string>(); }
public BlockingProducer(IModelMessenger messenger) { _messenger = messenger; }