В настольном приложении C# в двух ситуациях вызывается фоновый работник, ответственный за сохранение состояния приложения. Когда приложение запущено. Это прекрасно работает. Другое, когда приложение закрывается, вызывается фоновый рабочий, чтобы сохранить состояние приложения, но прежде чем он начнет сохранять, приложение закрывается и ничего не сохраняется.C# Перед тем как закрыть приложение, чтобы позволить фоновому работнику закончить сохранение состояния приложения
Я попытался решить проблему, используя класс событий AutoReset в DoWork и RunWorkerCompleted, но не работал, потому что приложение закрыто до того, как backgroundworker может сэкономить все.
Вопрос: как я могу сделать основной поток до тех пор, пока фоновая работа не завершит сохранение?
private void frmMain_FormClosing(object sender, FormClosingEventArgs e)
{
this.saveAHToolStripMenuItem_Click(this, e);
}
private void saveAHAsToolStripMenuItem_Click(object sender, EventArgs e)
{
this.backgroundWorkerMain1.RunWorkerAsync(args);
}
private void backgroundWorkerMain1_DoWork(object sender, DoWorkEventArgs e)
{
saveMethod();
}
private void backgroundWorkerMain1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
{
showResultOfSaving();
}
не закрываются, пока это событие не срабатывает: https://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.runworkercompleted(v=vs.110).aspx Если вы показать некоторые из ваших работ, мы могли бы помочь больше. – Pogrindis
Спасибо за вашу рекомендацию. Я обновил свой вопрос с помощью базовой структуры кода. Здесь FormClosing завершается, прежде чем сохранение будет завершено backgroundWorker. – Saad
Привет, я добавил решение как Изменить в свой ответ ниже. – KarmaEDV