Что такое удаленный объект в C#?

Я получаю ObjectDisposedException с помощью С#:

System.ObjectDisposedException: невозможно получить доступ к удаленному объекту.

Прежде чем я перейду к тому, почему я получаю сообщение об ошибке, я хотел бы знать, что именно представляет собой удаленный объект?

Затем, после понимания этого, почему вообще может возникнуть это ObjectDisposedException? У меня есть программа, которая загружает файлы в Amazon S3 и загружает их из нее, и она очень редко выдает мне эту ошибку.


person kyle_13    schedule 05.06.2015    source источник
comment
Мы тоже можем увидеть вашу работу?   -  person Soner Gönül    schedule 05.06.2015
comment
Ответьте на второй вопрос: msdn. microsoft.com/en-us/library/   -  person Jeroen Vannevel    schedule 05.06.2015
comment
ObjectDisposedException возникает при доступе к удаленному объекту. Для потоков и объектов соединения SQL это означает, что вы либо использовали объект в операторе using, либо явно вызвали Dispose или Close для объекта и попытались использовать его снова. Не видя вашего кода или места возникновения этой ошибки, трудно сказать, почему вы ее получаете.   -  person Ron Beyer    schedule 05.06.2015


Ответы (1)


Удаляемый объект — это объект, который реализует IDisposable, для которого был вызван метод Dispose. Это может быть вызвано явно или после завершения оператора using. Если это происходит спорадически, это может быть состоянием гонки.

person bcwhims    schedule 05.06.2015
comment
У меня действительно вызывался явный метод Dispose, и ошибка происходила время от времени. В некоторых примерах кода, которые были предоставлены для используемого мной метода, они показывали метод Dispose после метода PutObject (метод Amazon SDK), а некоторые — нет. На данный момент я удалил метод Dispose, и пока все в порядке, мне придется следить. Спасибо за предложения и объяснения. - person kyle_13; 05.06.2015
comment
Как правило, вы должны вызывать Dispose для объекта, если он реализует IDisposable, но не вызывайте его, пока не закончите работу с объектом. Если вы собираетесь иметь один объект, доступный для загрузки и скачивания файлов на все время работы программы, просто удалите его, когда программа закроется (в идеале в блоке finally). - person bcwhims; 05.06.2015