Почему уничтожается созданный в классе объект? В общем пишу на вин форме c# и столкнулся с проблемой вылета программы, сейчас постараюсь объяснить.
в основном классе формы создаю ссылку на объект на другой формы, в последствии заполняю в этой другой форме датагрид, данными из первойResult r1 = new Result();
public void test()
{
for (int i = 0; i < Convert.ToInt32(timeCreditText.Text.ToString()); i++)
{
try
{
r1.dataGridView1.Rows.Add();
r1.dataGridView1.Rows[i].Cells[0].Value = (i + 1).ToString();
}
catch(Exception e)
{
MessageBox.Show("error");
}
}
r1.Show();
}
и проблема заключается в том, что когда я закрываю окно 2 формы и нажимаю заново чтобы его открыть и заполнить данными у меня выскакивает исключение, что System.ObjectDisposedException: "Доступ к ликвидированному объекту невозможен."
Скрываю ту другую форму так: MainForm.r1.Hide(); и непонятно почему ссылка на объект уничтожается.
НО если создавать при нажатии каждый раз новый объект, то все ок, и я этим и воспользовался, но не понятно почему созданный объект другой формы в основном классе основной формы уничтожается при скрытии той другой формы.

21 Авг 2019 в 06:58
154 +1
0
Ответы
1

В данном случае объект r1 уничтожается потому, что при вызове метода Hide() для формы r1 вызывается метод Dispose(), который освобождает все ресурсы, связанные с объектом формы. После вызова метода Dispose() объект формы уже не может быть использован.

Чтобы это обойти, можно использовать метод ShowDialog() вместо Show() при отображении формы r1. Метод ShowDialog() блокирует основную форму и не позволяет ей продолжать выполнение кода, пока отображенная форма не будет закрыта. Таким образом, при повторном открытии формы r1 будет создан новый объект и не возникнет исключение.

Также можно перенести создание объекта r1 внутрь метода test(), чтобы каждый раз при его вызове создавался новый объект формы.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 83 852 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир