На днях пытался устранить предупреждение компилятора по использованию устаревших методов Thread.Suspend и Thread.Resume. Привожу его:
“Thread.Suspend has been deprecated. Please use other classes in System.Threading, such as Monitor, Mutex, Event, and Semaphore, to synchronize Threads or protect resources. ...”
//...
thread.Suspend();
try
{
StackTrace stackTrace = new StackTrace(thread, false);
//...
}
finally
{
thread.Resume();
}
//...
В MSDN-документации к конструктору StackTrace(Thread targetThread, bool needFileInfo) сказано, что передаваемый поток должен быть в состоянии Suspended, иначе возникнет ThreadStateException. Небольшой эксперимент подтвердил, что MSDN находится в актуальном состоянии :-). Интересно, что указанный конструктор не помечен как obsolete, и других способов получить трассировку стека (stack trace) для потока в .net 2.0 я не нашел.