Пример #1
0
        public Main()
        {
            InitializeComponent();

            _validationHistoryRepository = new ValidationHistoryRepository();

            _recentCheckedEmails = new BindingList <EmailContent>();

            srcTxt.Text = Settings.Default.src;
            desTxt.Text = Settings.Default.des;

            // Maybe utilize Managed Extensibility Framework (MEF) to dynamic load IFilter instances from assemblies in the production
            var filters = new Collection <IFilter>()
            {
                new SendCustomerIDFilter(),
                new SensitiveInfoFilter()
                // add many filter here if need
            };

            _fileMailFilterService =
                new MailFilterService(new FileMailRepository(Settings.Default.src, Settings.Default.des),
                                      _validationHistoryRepository)
            {
                OnEmailChecked = e => AddToRecentList(e),
                Filters        = filters
            };

            _dbMailFilterService = new MailFilterService(new MailRepository(), _validationHistoryRepository)
            {
                OnEmailChecked = e => AddToRecentList(e),
                Filters        = filters
            };

            fileEmailContentBindingSource.DataSource    = _fileMailFilterService.EmailContentQueue;
            dbEmailContentBindingSource.DataSource      = _dbMailFilterService.EmailContentQueue;
            checkedEmailContentBindingSource.DataSource = _recentCheckedEmails;

            //_source.Token.Register(() =>
            //{
            //    _isRunning = false;
            //    startBtn.Enabled = !_isRunning;
            //    stopBtn.Enabled = _isRunning;
            //});
        }
Пример #2
0
        public MailFilterService(IMailRepository mailRepository, IValidationHistoryRepository validationHistoryRepository)
        {
            _emailContentQueue           = new ConcurrentQueue <EmailContent>();
            _mailRepository              = mailRepository;
            _validationHistoryRepository = validationHistoryRepository;
            EmailContentQueue            = new BindingList <EmailContent>();
            Filters = new Collection <IFilter>();

            _timer          = new Timer(1000);
            _timer.Elapsed += _timer_Elapsed;

            EnqueueProgress = new Progress <EmailContent>(s =>
            {
                EmailContentQueue.Add(s);
            });
            DequeueProgress = new Progress <EmailContent>(s =>
            {
                EmailContentQueue.Remove(s);
                OnEmailChecked?.Invoke(s);
            });
        }