C# 在新创建的对话框上需要调用
我们在应用程序中使用以下方法来显示对话框。该方法是从UI线程和非UI线程调用的。调用messageDialog上的InvokeRequired以确保该对话框将显示在UI线程上是否可以C# 在新创建的对话框上需要调用,c#,.net,winforms,C#,.net,Winforms,我们在应用程序中使用以下方法来显示对话框。该方法是从UI线程和非UI线程调用的。调用messageDialog上的InvokeRequired以确保该对话框将显示在UI线程上是否可以 public static DialogResult ShowMessageDialog(MessageInfo messageInfo,ButtonFlags flags,IconType iconId,HorizontalAlignment btnAlignment,bool topMost) { Dialog
public static DialogResult ShowMessageDialog(MessageInfo messageInfo,ButtonFlags flags,IconType iconId,HorizontalAlignment btnAlignment,bool topMost)
{
DialogResult retDialogResult = DialogResult.None;
MessageDialog messageDialog = new MessageDialog(messageInfo.GetLanguageBasedFieldValue(MessageInfoField.Message), iconId);
messageDialog.TopMost = topMost;
// Initialize the layout of Message Dialog.
messageDialog.Initialize();
retDialogResult = messageDialog.ShowDialog();
return retDialogResult;
}
否,
invokererequired
将永远不会返回true,因为MessageDialog
是在您正在执行的线程上构造的。另外,InvokeRequired
将始终返回false,直到创建控件的句柄,这在以后才会发生(请参阅)
请确保始终从UI线程调用
ShowMessageDialog
,或者使用ShowMessageDialog
进入UI线程的方法,例如存储ISynchronizeInvoke
。我认为前者是更好的解决方案。不,invokererequired
永远不会返回true,因为MessageDialog
是在您正在执行的线程上构造的。另外,InvokeRequired
将始终返回false,直到创建控件的句柄,这在以后才会发生(请参阅)
请确保始终从UI线程调用ShowMessageDialog
,或者使用ShowMessageDialog
进入UI线程的方法,例如存储ISynchronizeInvoke
。我认为前者是更好的解决办法