Re: [Need help]: трассировка многопоточных операций
От: Hussar77 Россия http://vstsblog.ru
Дата: 15.04.10 06:00
Оценка: 14 (1) +1
Здравствуйте, Sinix, Вы писали:


S>Дано:

S>
S>void ExecuteTraced(Action a, string message)
S>{
S>  TraceOpStart(message);
  
S>  a();
  
S>  TraceOpEnd(message);
S>}
S>


S>Делегат в свою очередь может вызывать ExecuteTraced, причём асинхронно (через ThreadPool, BeginInvoke, PLINQ etc, поэтому вставить свой код-заглушку перед началом асинхронного вызова не выйдет).


S>Как бы организовать трассировку с учётом вложенности вызовов?


S>CallContext имеет неприятную особенность — значения в нём заменяются после выполнения EndInvoke(), причём даже если EndInvoke былл выполнен асинхронно.


S>По сути задача сводится к "получить id потока, запустившего выполнение в текущем".


А посмотрите на CorrelationManager Class http://msdn.microsoft.com/en-us/library/system.diagnostics.correlationmanager.aspx. Может, это то, что Вы хотели?
С уважением,
Владимир Гусаров aka Hussar
http://vstsblog.ru
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.