Многопоточный механизм обработки ошибок
От: ZveN  
Дата: 15.02.04 10:54
Оценка:
Собственно пишу 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();
}

Вот только каждый раз поток новый запускается для каждого исключения...
Re: Многопоточный механизм обработки ошибок
От: TK Лес кывт.рф
Дата: 15.02.04 14:32
Оценка: 3 (1)
Hello, "ZveN"

> Собственно пишу subj. Существует класс, где хранится коллекция Publisher'ов и список типов исключений для каждого Publisher'а. Все публикаторы через рефлексию (MethodInfo тоже храню в экземпляре конфига).

> Разумеется, если публикатор отправляет сообщение об ошибке, например на e-mail, то этот процесс достаточно долгий => надо все это делать в отдельном Background потоке.
> Хотелось бы для каждого публикатора создавать отдельный поток и при возникновении исключения передавать его в соответствующий поток обработчику. Может кто сможет подсказать в каком направлении начать раскопки.
>
> Вот только каждый раз поток новый запускается для каждого исключения...

Что-бы поток не создавался каждый раз заново — можно использовать пулы потоков (либо сделать свой, либо использовать стандартный).

В остальном-же можно обратить внимание на Asynchronous Invocation Application Block т.к. отдельная служба для доставки уведомлений о проблемах может оказаться более надежна, чем отправка сообщений из потенциально проблемного приложения.
Posted via RSDN NNTP Server 1.8 beta
Если у Вас нет паранойи, то это еще не значит, что они за Вами не следят.
Re[2]: Многопоточный механизм обработки ошибок
От: ZveN  
Дата: 17.02.04 08:21
Оценка:
TK>Что-бы поток не создавался каждый раз заново — можно использовать пулы потоков (либо сделать свой, либо использовать стандартный).

TK>В остальном-же можно обратить внимание на Asynchronous Invocation Application Block т.к. отдельная служба для доставки уведомлений о проблемах может оказаться более надежна, чем отправка сообщений из потенциально проблемного приложения.


А как решить проблемы синхринизации??? Если два публишера работают одновременно и пишут в файл — Exception ????
... << RSDN@Home 1.1.0 stable >>
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.