Как отменить или заменить фонового работника, который занят выполнением вызова SQL? - PullRequest
0 голосов
/ 11 июля 2019

Так что мой фоновый работник запускается и вызывает базу данных для данных (в зависимости от того, сколько там данных, это может занять несколько дополнительных секунд, чем обычно).Если во время вызова этих данных общий контекст меняется, например, скажем, что в данный момент я загружаю полный список футболистов, и эта загрузка занимает 10 секунд, но теперь я нажал на пользовательском интерфейсе, чтобы теперь показывать только персонал, а затем фонового работника ».ломается "и говорит, что он занят.

Пока я не позволяю пользователю изменять контекст пользовательского интерфейса, пока он не завершит загрузку SQL, что является исправлением, но я чувствую, что должно быть что-то лучше сделать.

Я смотрел на отмену фонового работника, но это снова немного бесполезно, потому что работник все еще занят выполнением SQL для его отмены.

Я также пытался создать новый экземпляр работника, и это работает, но на самом деле он просто создает другой поток для запуска нового работника.Например, рабочий начинает загружать список игроков, пользователь меняет контекст на персонал, загружает список сотрудников, а затем загружает список игроков, который перезаписывает список сотрудников.

if (loader.IsBusy)
{
    loader = new BackgroundWorker();
    loader.WorkerReportsProgress = true;
    loader.DoWork += CompanyIDChanged;
    loader.ProgressChanged += Loader_ProgressChanged;
    loader.RunWorkerCompleted += Loader_RunWorkerCompleted;
}

loader.RunWorkerAsync();

Вот как я сейчас заменяю«Рабочий.

Результат, который я хотел бы получить, следующий.

  1. Рабочий начинает загружать список игроков
  2. Пользовательский интерфейс изменен так, что теперь им нужен персонал
  3. Рабочий фактически находится в любом состоянии, в котором он находится
  4. Затем рабочий снова запускается с новым контекстом

Подходит ли фоновый работник для этого сценария?Есть ли что-то лучше использовать?Или я смотрю на это неправильно и мне нужно переосмыслить то, что я делаю?

...