Я экспериментирую с CodeSite Express, встроенным в Delphi XE. Я хочу использовать функцию Category
следующим образом:
CodeSite.Category := 'SomeCategory';
CodeSite.EnterMethod ('SomeMethod');
try
DoSomething;
finally
CodeSite.ExitMethod ('SomeMethod');
end;
Проблема в том, что если DoSomething
также содержит код регистрации, который устанавливает категорию, то ExitMethod
окажется в другой категории и разрушит всю иерархию в средстве просмотра.
Еще хуже, если сработает многопоточность: установка Category
и последующий вызов команд журнала, очевидно, не является атомарной операцией, поэтому два потока, использующие ведение журнала CodeSite, не могут реально использовать Category
. По крайней мере, так это выглядит в моих журналах. Я бы ожидал, что Category
будет локальным для потока, но, похоже, нет.
Каков правильный шаблон для работы с категориями в контексте вложенных журналов и потоков?
Спасибо!