Вот где .NET начинает делать свою голову Рассмотрим следующий сценарий:.Что происходит с объектами DataRow, когда Dispose вызывается в DataTable?
- У меня есть
DataTable
объект, содержащий рядDataRow
объектов - добавить некоторые из
DataRow
объектов в массив - Я звоню
Dispose
наDataTable
.
Какие гарантии у меня есть, что вызов Dispose
на DataTable
не ухудшала DataRow
объектов (которые, по ссылке, будет влиять на тех, которые добавлены в массив)?
MS documentation - это нулевая помощь в этом случае.
EDIT: До сих пор люди пропустили точку целиком. IDisposable
Объекты означают, которые должны быть удалены как можно скорее. В течение обычного дня мой код будет создавать тысячи объектов DataTable
. Ни в коем случае я не оставляю тех, кто не размещен, если они реализуют IDispoable
.
НО, мне нужно несколько DataRow
объектов, чтобы остаться в живых, потому что это то, что ожидает, что моя третья сторона бинарная (который я не имею никакого контроля над). И мне нужно, чтобы они остались в живых для значительно длиннее, чем DataTable
объектов.
Все что мне нужно, это авторитетная информация, которая описывает, что Dispose
на DataTable
на самом деле делает. Похоже, что указанной информации не существует, поэтому я прошу здесь о помощи. У кого-то может быть ссылка или документация, которую я упускал из виду, что отвечает на мои потребности.
EDIT 2: я испытал, как Blam предложил, включая добавление GC.Collect
+ получение бонуса GC.WaitForPendingFinalizers
+ еще один GC.Collect
после размещени DataTable
. DataRows
кажутся прекрасными, все еще живыми и доступными. Это положительно, но увы не авторитетное достаточно включить в производственном коде :-(
Что вы подразумеваете под «компромиссом»? Если вы все еще хотите использовать объекты DataRow, то почему вы удаляете «DataTable», который содержит их в первую очередь? Устранить что-то нужно только тогда, когда вы больше не пользуетесь им. Если у вас есть дальнейшее использование для «DataTable», тогда не используйте его в первую очередь. – jmcilhinney
Что вы получаете от сохранения DataRows в массиве? – Tarik
@Tarik Я получаю совместимость с методом (сторонний двоичный файл), который ожидает DataRows в массиве ;-) – misha256