Witam.
Od jakiegoś czasu zacząłem używać Quartz.NET 3.0. Aktualizuje mój stary projekt do robienia kopii zapasowej baz danych i natknąłem się na problem prawdopodobnie związany z asynchronicznością.
SplashScreenManager.ShowDefaultWaitForm();
new CreateJobsSchedules().InitializeAndStartNow(_optimoJob);
SplashScreenManager.CloseDefaultWaitForm();
W usłudze nie ma problemu, ponieważ tam mnie progres nie interesuje, ale jeśli ktoś by chciał uruchomić kopie "now" z GUI to niestety mój WaitForm
pojawia się i znika. Próbowałem await
, próbowałem wszędzie wymusić na nim .Result
, .Wait()
. Niestety nic nie pomaga. Muszę użytkownikowi zablokować GUI na czas trwania zadania i poinformować go, że zadanie zostało zakończone.
public class BackupJob : IJob
{
OptimoJob _databaseBackupJob;
public async Task Execute(IJobExecutionContext context)
{
_databaseBackupJob = (OptimoJob)context.JobDetail.JobDataMap["jobData"];
if (_databaseBackupJob != null)
{
BackupTask.DoBackup(_databaseBackupJob.SQLConfiguration);
ZIPService.ZipBackupFiles(_databaseBackupJob.SQLConfiguration.BackupFilesSavePath);
FTPService.SendZipFiles(_databaseBackupJob.FTPConfiguration, _databaseBackupJob.SQLConfiguration.BackupFilesSavePath);
NotificationService.SuccessNotificationMessage(_databaseBackupJob.EmailConfiguration);
}
}
}
Ja swoich metod nie robię asynchronicznych, ale Quartz tak. Jak to objeść?