Завершить вызов метода класса - PullRequest
0 голосов
/ 21 марта 2012

У меня есть класс журналирования, который хранит записи в datatable dt. Затем я использую SQLBULKCOPY для записи этого dt в таблицу sql. Основные вещи. Проблема в том, что я хотел бы вызывать SQLBULKCOPY только тогда, когда, скажем, 50 записей в DT. Проблема в том, что если я сделаю это (намеренно или нет, например, если блок кода, использующий класс log, выдает исключение) с объектом logging, и в dt все еще есть 15 строк?

То, что я хотел бы сделать, это иметь некоторый код "финализации" в самом классе журнала, который вызывает собственный метод класса журнала, который записывает эти 15 записей из dt с использованием sqlbulkcopy. Я знаю, что переопределение методов Dispose / Finalize действительно не предназначено для моей ситуации. И не представляется возможным использовать какой-то внешний способ для ведения журнала, например, гигантские try / catch, которые всегда могут вызвать поддельный метод finalize. (Причиной может быть 4 или 5 слоев вложенных классов с многочисленными try / catch, using и т. Д.)

Есть идеи?

1 Ответ

0 голосов
/ 22 марта 2012

Почему бы не реализовать шаблон IDisposable?

Если вы намеренно завершаете работу, вы можете вызвать .Dispose, а если вы неожиданно завершаете работу, вы можете выполнить очистку в .Dispose (False).

...