Отключение службы WCF

2

У меня есть один экземпляр класса WCF, который сам размещается с использованием службы Windows. Я установил хост службы в событии OnStart, и я закрою службу в событии OnStop.

В классе службы я реализую деструктор, и у меня есть некоторый код очистки. По существу код очистки сериализует некоторые внутренние объекты на диск в следующий раз и должен создавать два файла.

То, что я вижу, - это иногда два файла, иногда один, иногда пустые файлы, в которых должны быть данные. Похоже, деструктор не успевает завершить сериализацию объектов до завершения всего процесса службы.

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

Теги:
wcf

1 ответ

4
Лучший ответ

Деструктор - это плохое место для выполнения этой логики b/c, вам не может быть гарантировано, что такое состояние любого дочернего или родительского объектов. Некоторые из них, возможно, имели свою логику Dispose, вызванную ко времени вызова деструктора.

Я бы предложил вам добавить явный метод Save в свой класс и вызвать его во время OnStop. Нет причин скрывать сохранение в Destructor и скрывать побочные эффекты от людей, читающих ваш код.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню