Профилировщик является великим для рассмотрения Вашего под управлением кода во время разработки, но если Вы ищете способность сделать пользовательские трассировки в производстве, затем, как Denis G. упомянул, , PostSharp является идеальным инструментом: Вы не должны изменять весь свой код, и можно легко переключить его вкл\выкл.
также легко установить за несколько минут и GaГ «l Fraiteur, у создателя PostSharp даже есть видео, который показывает Вам, как легкий это должно добавить трассировку до существующего приложения.
Вы найдете примеры и учебные руководства в раздел документации .
Да. Я думаю, что уместно использовать ThreadPool в коде библиотеки. Даже если пользователь может использовать ThreadPool снаружи, ThreadPool все еще достаточно хорош, чтобы настроить себя.
С другой стороны, как разработчик библиотеки, вы должны обеспечить гибкость: пользователь может выбрать использование ThreadPool, определенного потока (ов), или даже реализация стороннего пула потоков.
Да.
При условии, что это хорошо документировано, и вы предоставляете методы, позволяющие пользователю библиотеки управлять пулом потоков, например, минимальные / максимальные потоки и, возможно, возможность не вообще используйте пул потоков.
Вы также должны сделать очень ясным, какие открытые части вашей библиотеки являются потокобезопасными, а какие нет.
ThreadPool предназначен для одновременного использования несколькими компонентами. Так что сам по себе не представляет особых проблем, если используется из вашей конкретной библиотеки.
Что может быть проблемой, так это поведение потоковой передачи в вашей библиотеке в целом. Необходимо четко задокументировать семантику потоковой передачи вашей библиотеки. Как эти потоки создаются и используются, должно быть подробно описано в реализации. Сам ThreadPool не должен представлять проблемы, если только одно из присущих ему свойств (сходство с COM-квартирой, невозможность отмены потоков и т. Д.) Не представляет проблемы для вашего API или потребителей.