使用MessageBox停止主线程

时间:2018-01-10 15:27:14

标签: .net wpf vb.net multithreading

我在一个单独的线程上查询数据库,并为用户生成一个MessageBox。我希望用户停止他正在做的事情并回复MessageBox。

使用下面的代码,消息框甚至不会弹出当前窗口。用户需要单击任务栏才能看到它。如何让它中断主线程?

Dim Button = MessageBoxButton.YesNo
Dim icon = MessageBoxImage.Information
Dim result = MessageBox.Show("Hi", "Title", Button, icon)

Select Case result
  Case MessageBoxResult.Yes
    queryInProgress = 0
    cashTransfer.TransactionApproved = 1
  Case MessageBoxResult.No
     queryInProgress = 0
     cashTransfer.TransactionApproved = 0
End Select

1 个答案:

答案 0 :(得分:0)

您需要在ui-thread上调用它。如果您使用winforms,则Application类会为您提供一组当前打开的表单。通常第一个应该是使用Application.Run()创建的ui创建的表单。

Application.OpenForms[0].Invoke(new Action(() =>
{
    MessageBox.Show("Test");
}));

希望它适合你。