В приложении WPF я использую BackgroundWorker для периодической проверки состояния на сервере. Хотя это работает нормально, я хочу открыть MessageBox, уведомляя пользователей, если что-то не получается во время проверки.
Вот что у меня есть:
public static void StartWorker()
{
worker = new BackgroundWorker();
worker.DoWork += DoSomeWork;
worker.RunWorkerAsync();
}
private static void DoSomeWork(object sender, DoWorkEventArgs e)
{
while (!worker.CancellationPending)
{
Thread.Sleep(5000);
var isOkay = CheckCondition();
if(!isOkay)
MessageBox.Show("I should block the main window");
}
}
Но этот MessageBox не блокирует главное окно. Я все еще могу щелкнуть мое приложение WPF и изменить все, что мне нравится, с помощью MessageBox.
Как мне это решить? Спасибо,
EDIT:
Для справки, вот что я в итоге сделал:
public static void StartWorker()
{
worker = new BackgroundWorker();
worker.DoWork += DoSomeWork;
worker.ProgressChanged += ShowWarning;
worker.RunWorkerAsync();
}
private static void DoSomeWork(object sender, DoWorkEventArgs e)
{
while (!worker.CancellationPending)
{
Thread.Sleep(5000);
var isOkay = CheckCondition();
if(!isOkay)
worker.ReportProgress(1);
}
}
private static void ShowWarning(object sender, ProgressChangedEventArgs e)
{
MessageBox.Show("I block the main window");
}