FileSystemWatcher и Timer не работают как надо - C#

Узнай цену своей работы

Формулировка задачи:

Пишу код
namespace watcher
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            FileSystemWatcher watcher = new FileSystemWatcher();
            watcher.Path = @"C:\Records";
            watcher.Created += new FileSystemEventHandler(onFileCreate);
            watcher.EnableRaisingEvents = true;
        }
        private void onFileCreate(object source, FileSystemEventArgs e)
        {
            BackgroundWorker bw = new BackgroundWorker();
            bw.DoWork += (s, a) =>{
                Timer tm = new Timer();
                tm.Interval = 1000;
                tm.Tick += (q, w) =>{
                    MessageBox.Show("");
                };
                tm.Start();
            };
            bw.RunWorkerAsync();
        }
    }
}
Запускаю, добавляю в папку Records файл -- ничего не происходит Делаю в данном коде совсем небольшое изменение:
namespace watcher
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        {
            FileSystemWatcher watcher = new FileSystemWatcher();
            watcher.Path = @"C:\Records";
            watcher.Created += new FileSystemEventHandler(onFileCreate);
            watcher.EnableRaisingEvents = true;
        }
        private void onFileCreate(object source, FileSystemEventArgs e)
        {
            BackgroundWorker bw = new BackgroundWorker();
            bw.DoWork += (s, a) =>{
                Timer tm = new Timer();
                tm.Interval = 1000;
                tm.Tick += (q, w) =>{
                    MessageBox.Show("");
                };
                tm.Start();
                /*ДОБАВЛЯЮ ТОЛЬКО ЭТО*/MessageBox.Show("");/*ДОБАВЛЯЮ ТОЛЬКО ЭТО*/
            };
            bw.RunWorkerAsync();
        }
    }
}
После чего MessageBox'ы с timer'а начинаются сыпаться как следует. Объясните пожалуйста в чем дело? Ну и извечный вопрос -- подскажите новичку, как передать параметр в timer?

Решение задачи: «FileSystemWatcher и Timer не работают как надо»

textual
Листинг программы
bw.DoWork += (sender1, eventArgs) => MessageBox.Show(eventArgs.FullPath);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.6 из 5
Похожие ответы