通过同步上下文自定义消息框-无法访问已处置的对象
本文关键字:访问 对象 同步 上下文 自定义消息 | 更新日期: 2023-09-27 17:53:11
我在这里的情况相当奇怪。我创建了一个自定义的MessageBox表单(而不是内置的MessageBox.Show
)。下面的代码是我用来调用表单的,当我需要它的时候:
internal DialogResult ShowCustomMessageBox(string message, string caption, Icon icon = null)
{
var result = DialogResult.None;
MainForm.Get.UISynchContext.Send(s =>
{
var messageBox = new DialogBox
{
Icon = icon,
Text = caption,
rtbInDialogBox = { Text = message }
};
result = messageBox.ShowDialog();
messageBox.Dispose();
}, null);
return result;
}
当我运行这个时,我在messageBox.ShowDialog();
上得到一条错误消息,即messageBox实例已经被处置。
当我将代码发布到同步上下文时,我很确定MainForm会自己运行代码(而不是其他线程),我不确定为什么它告诉我messageBox已经被处置了。
任何想法?
我找到问题了。显然,您需要指定对话框的所有者:result = messageBox.ShowDialog(MainForm.Get);