Невозможно получить доступ к удаленному объекту во всплывающих сообщениях события CellEditFinished ObjectListView
Когда я нажимаю кнопку "Открыть модальное окно" в [Основная форма], она показывает [подчиненную форму], которая построена со списком данных с использованием компонента ObjectListView.
Когда я щелкаю столбец "Возраст", чтобы отредактировать его, и меняю значение в ячейке на ненулевое значение, затем нажимаю на пробел компонента ObjectListView (если я нажму Enter, исключение не появится) всплывающее сообщение. Я оставил это сообщение перед всеми открытыми окнами и жду 10 секунд ожидания приложения. В это время исключение показывает:
Невозможно получить доступ к удаленному объекту. Имя объекта: "ObjectListView".
Вот код:
private void button1_Click(object sender, EventArgs e)
{
modalForm = new Form2();
StartTimeOutTimer();
var result = modalForm.ShowDialog(this);
}
private void ProcessTimeOut()
{
timer1.Stop();
seconds = 0;
List<Form> openForms = Application.OpenForms.Cast<Form>().Where(frm => !string.Equals(frm.Name, "Form1") && !frm.IsDisposed).ToList();
for (var i = openForms.Count - 1; i >= 0; i--)
{
openForms[i].Dispose();
}
}
private void timer1_Tick(object sender, EventArgs e)
{
seconds++;
if (seconds == 10)
{
ProcessTimeOut();
}
}
исключение в этой строке:
var result = modalForm.ShowDialog (this);
Моя репутация слишком низкая, чтобы загружать больше ссылок, поэтому я публикую код в OneDrive. Пример кода и решение здесь:
https://1drv.ms/u/s!AmQYEYkCV6gqgw6iPMVFPBKlSx1V
Я попытался добавить исходный код ObjectListView в свое решение, и ошибка произошла в методе GetHeaderControl в исходном коде v2.9.0
Пожалуйста, загрузите мой пример кода, чтобы воспроизвести исключение. Как мне исправить это исключение? Любое предложение будет оценено.
1 ответ
Я загружаю код, и это кажется ошибкой objeclistview. Я не могу это исправить, но у меня есть обходной путь для решения вашей проблемы: вы можете ShowDialog() асинхронно, например так:
this.BeginInvoke(new Action(() => {
var myMsgBox = new MyMsgBox("Must be 0");
myMsgBox.ShowDialog();
}));