2015-06-05 5 views
1

Я получаю ObjectDisposedException с помощью C#:Что такое расположенный объект в C#?

System.ObjectDisposedException: Не удается получить доступ к объекту, расположенную.

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

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

+0

Можем ли мы увидеть вашу работу? –

+0

Ответ на ваш второй вопрос: https://msdn.microsoft.com/en-us/library/system.objectdisposedexception%28v=vs.110%29.aspx –

+3

«ObjectDisposedException» возникает, когда вы обращаетесь к объекту, который был расположены. Для потоков и объектов соединения SQL это означает, что вы либо использовали объект в инструкции «using», либо явно вызывали «Dispose» или «Close» на объекте и снова пытались использовать его. Не видя своего кода, или где эта ошибка возникает, трудно сказать, почему вы его получаете. –

ответ

4

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

+0

У меня был явный метод Dispose, и ошибка происходила спорадически. В некоторых примерах кода, которые были предоставлены для метода, который я использовал, они показали метод Dispose после метода PutObject (метод SDK Amazon), а некоторые - нет. На данный момент я вынул метод Dispose, и пока все в порядке, мне нужно будет следить. Спасибо за предложения и объяснения. –

+0

Как правило, вы должны вызывать Dispose на объекте, если он реализует IDisposable, но не вызывать его до того, как вы закончите с объектом. Если у вас будет один объект, доступный для загрузки и загрузки файлов в течение всего времени работы программы, просто удалите его, когда программа закроется (в идеале, в блоке finally). – bcwhims