Вы кушаете системные ресурсы. (Вы можете видеть, что если вы запустите свой диспетчер задач, go к деталям и добавите столбец «Ручки». Затем посмотрите, как он растет по мере выполнения вашей программы)
Есть две вещи, которые вы можете рассмотреть:
Интерфейс IDisposable
Всегда удаляйте объекты, содержащие интерфейс IDisposable.
Например, попробуйте изменить этот код:
_progresso = new Progresso();
_progresso.ShowDialog();
до:
using (_progresso = new Progresso())
{
_progresso.ShowDialog();
}
Создание экземпляра
Кроме того, Фоновый работник должен быть должным образом удален или создан только один раз.
Вы чрезмерно используете ресурсы, когда вы позволяете ему работать таким образом. Попробуйте использовать один экземпляр вместо того, чтобы создавать новые экземпляры и регистрироваться в их событиях каждый раз, когда вы нажимаете.
Вы можете, например, удалить эти строки:
// BackgroundWorker backgroundWorker = new BackgroundWorker();
// _progresso = new Progresso();
и поместить их в свой конструктор. .
Кроме того, когда ваш класс не реализует IDisposable, реализуйте его. Затем утилизируйте их, внедрив одноразовый интерфейс ..
protected override void Dispose(bool disposing);
Если полезно, примите ответ ..
Привет, Майк