Собственно пишу subj. Существует класс, где хранится коллекция Publisher'ов и список типов исключений для каждого Publisher'а. Все публикаторы через рефлексию (MethodInfo тоже храню в экземпляре конфига).
Разумеется, если публикатор отправляет сообщение об ошибке, например на e-mail, то этот процесс достаточно долгий => надо все это делать в отдельном Background потоке.
Хотелось бы для каждого публикатора создавать отдельный поток и при возникновении исключения передавать его в соответствующий поток обработчику. Может кто сможет подсказать в каком направлении начать раскопки.
Ума хватило сделать только это:
public static void PublishEvent(ExceptionBase exception)
{
ThreadStatePublisher publisher = new ThreadStatePublisher(exception, config);
Thread publisherThread = new Thread(new ThreadStart(publisher.Publish));
publisherThread.IsBackground = true;
publisherThread.Priority = ThreadPriority.BelowNormal;
publisherThread.Start();
}
Вот только каждый раз поток новый запускается для каждого исключения...
Hello, "ZveN"
> Собственно пишу subj. Существует класс, где хранится коллекция Publisher'ов и список типов исключений для каждого Publisher'а. Все публикаторы через рефлексию (MethodInfo тоже храню в экземпляре конфига).
> Разумеется, если публикатор отправляет сообщение об ошибке, например на e-mail, то этот процесс достаточно долгий => надо все это делать в отдельном Background потоке.
> Хотелось бы для каждого публикатора создавать отдельный поток и при возникновении исключения передавать его в соответствующий поток обработчику. Может кто сможет подсказать в каком направлении начать раскопки.
>
> Вот только каждый раз поток новый запускается для каждого исключения...
Что-бы поток не создавался каждый раз заново — можно использовать пулы потоков (либо сделать свой, либо использовать стандартный).
В остальном-же можно обратить внимание на
Asynchronous Invocation Application Block т.к. отдельная служба для доставки уведомлений о проблемах может оказаться более надежна, чем отправка сообщений из потенциально проблемного приложения.
Posted via RSDN NNTP Server 1.8 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
TK>Что-бы поток не создавался каждый раз заново — можно использовать пулы потоков (либо сделать свой, либо использовать стандартный).
TK>В остальном-же можно обратить внимание на Asynchronous Invocation Application Block т.к. отдельная служба для доставки уведомлений о проблемах может оказаться более надежна, чем отправка сообщений из потенциально проблемного приложения.
А как решить проблемы синхринизации??? Если два публишера работают одновременно и пишут в файл — Exception

????
... << RSDN@Home 1.1.0 stable >>