когда я делал подобные вещи, прежде чем попытался разделить вещи на две части:
dict
из id
с для функций или Future
с), затем отправляет запрос и блокирует для ответа id
. это также разумное место для обработки неожиданно закрытого сокета, который должен выдвигать исключение соответствующим образом Это, вероятно, несколько сотен строк кода и довольно специфично для приложения…
DataRow наследовал схему от DataTable, таким образом, существуют ссылки от DataRow до схемы таблицы, которая генерировала строку. Новая строка находится в Отдельном состоянии в таблице.
это - то, почему GC оставил новые неиспользованные строки в покое.
DataTable. NewRow () добавляет созданную строку к RecordManager DataTable. Я не совсем уверен, почему это происходит, но это - то, почему это не освобождено GC.
Кажется, что существует только два способа избавиться от DataRow:
Я думаю, что Ваши две проблемы связаны.
Таблица. NewRow создает новую строку данных, которая имеет тот же формат столбца как начальная Таблица.
Эта новая строка должна быть добавлена к таблице использования таблицы. Строки. Добавьте (newRow). Ваш цикл будет создавать объекты, которые никогда не используются и следовательно съедят память. См. эту статью для получения дополнительной информации http://msdn.microsoft.com/en-us/library/system.data.datatable.newrow.aspx