1

我在这里的情况相当奇怪。我创建了一个自定义 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 已经被释放。

有任何想法吗?

4

1 回答 1

1

我发现了问题。显然您需要指定对话框的所有者:result = messageBox.ShowDialog(MainForm.Get);

于 2015-06-03T16:37:10.473 回答