Member 14569850 Ответов: 2

Как я могу решить проблему “не удается получить доступ к удаленному объекту”?


Я использую PrintPreviewDialog для предварительного просмотра текстовых полей в PDF, но когда я просматриваю его в первый раз и закрываю диалог предварительного просмотра, и если я пытаюсь просмотреть его снова, он выдает мне сообщение “не удается получить доступ к удаленному объекту. Имя объекта: PrintPreviewDialog”

Что я уже пробовал:

Я попытался добавить строку кода, которая устанавливает isDisposed == false, это действительно работает

[no name]

можете ли вы поделиться своим Методом Dispose, если используете IDisposable pattern?
вы избавляетесь от объекта во время закрытия?

2 Ответов

Рейтинг:
1

Ashutosh Gpt

одна из причин может заключаться в том, что объект утилизируется при первом закрытии.
в c# лучшим способом избавиться от любого объекта является IDisposable pattern. если вы не хотите избавляться от объекта, который вы хотите сохранить в памяти в течение некоторого времени, то убедитесь, что вы изменили поведение dispose этого объекта в таком случае вы избавляетесь, когда их родитель будет удален.

Class A : Idiposable
{
   public B obj;

// call whenever it is required.
   void Dispose()
{
  obj.Dispose();
  
}
} 

Class B : Idiposable
{
   void Dispose()
{
 Dispose any third party obj etc. like printview etc.
}
}


вы можете добавить больше деталей, если это не ясно. но я уже сказал вам решение в целом для любого типа объекта Dispose, это поможет вам также понять шаблон Dispose.


Рейтинг:
0

Richard Deeming

Вы пытаетесь использовать экземпляр PrintPreviewDialog после того как ты позвонишь Dispose на нем.

Либо измените свой код, чтобы вы не звонили Dispose пока вы не закончите с экземпляром; или измените свой код, чтобы создать новый экземпляр, когда это необходимо.