コード例 #1
0
        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);
        }
コード例 #2
0
 public Producer(IModelMessenger messenger)
 {
     _messenger = messenger;
     _queue     = new Queue <string>();
 }
コード例 #3
0
 public BlockingProducer(IModelMessenger messenger)
 {
     _messenger = messenger;
 }