У меня есть приложение C # Windows Form, в котором есть меню «Начать загрузку файлов», и в этом меню есть два экземпляра пользовательских элементов управления (подменю, меню вкладок).Для каждой вкладки (пользовательский контроль) у меня есть кнопка загрузки и таймер, который запускает ее каждые 5 минут.Я использую частного фонового работника, который создается каждый раз, когда элемент управления загружается и запускает метод для загрузки файлов.Это доставляет мне массу неприятностей, для которых я до сих пор не могу найти решение, потому что: - когда я включаю таймер для обоих элементов управления, они начинают загрузку несколько раз для каждого, и я вхожу в параллельный доступ к файлам или - межпотоковые исключения
Кто-то испытывал нечто подобное и, может быть, может дать мне подсказку?
Мой код выглядит так:
public partial class ucGeneralInfo : UserControl
{
private BackgroundWorker backgroundWorker;
private void TimerDownloadFrequency_Tick(object sender, ElapsedEventArgs e)
{
if (backgroundWorker.IsBusy != true)
{
backgroundWorker = new BackgroundWorker();
backgroundWorker.DoWork += new DoWorkEventHandler(backgroundWorker_DoWork);
backgroundWorker.RunWorkerCompleted += new RunWorkerCompletedEventHandler(backgroundWorker_RunWorkerCompleted);
backgroundWorker.RunWorkerAsync(Branch);
}
}
private void backgroundWorker_DoWork(object sender, DoWorkEventArgs e)
{
Download_Process((string) e.Argument);
}
private void Download_Process(string Branch)
{
// copying files
// processing files
}
}
}