Чтение файла справки VS2008. Я понял, что чистый способ выхода из потока (в .net) - либо с помощью оператора return (на C#), либо с возможностью прохождения потока до конца метода.Что эквивалентно ExitThread (ExitCode) и GetExitCodeThread в C# и .net?
Однако я не нашел метода или свойства, которые позволили бы мне установить код выхода потока и способ его извлечения (как это делается с использованием Win32 API). Поэтому возникает вопрос: как мне это сделать с помощью C# и .net?
Благодарим за помощь,
John.
nitzmahone, спасибо за ответ и ссылки. Учитывая, что между управляемыми потоками и потоками O/S не существует соответствия 1: 1, я думаю, что Pinvoking ExitThread и GetExitCodeThread не будут надежным решением. Я рассматриваю вывод нового класса потоков из Thread, который добавляет код выхода вместе с соответствующими методами для его установки и получения. Я обеспокоен тем, что, поскольку извлечение кода выхода произойдет после завершения потока, GC может удалить объект потока до того, как будет извлечен код выхода. Есть ли способ гарантировать, что этого не произойдет? – Hex440bx
Я сомневаюсь, что там вы получите хорошие результаты. Нить запечатана и не без оснований. Если вы планируете создать что-то, что не использует механизм кода выхода Win32, почему бы не использовать одну из конструкций более высокого уровня, которые уже существуют для отслеживания состояния логического потока (вышеупомянутый TPL и т. Д.)? В качестве альтернативы вы можете сделать что-то столь же простое, как статический словарь управляемых идентификаторов потоков и «коды выхода» - гарантированно проживать столько, сколько захотите. Не знаю всех деталей вашего проекта, но похоже, что вы пытаетесь сделать жизнь сложнее, чем нужно ... – nitzmahone
Реальная проблема в том, что я просто изучаю .net и C#. Я очень хорошо разбираюсь в обычном Windows API, поэтому я пытаюсь сопоставить то, что я знаю об использовании WinAPI, чтобы сделать то же самое в .net и C#. Очевидно, что этот метод имеет свои «проблемы», но он, как правило, хорош. В этом случае это звучит так, как будто я просто должен узнать больше, чтобы понять, как делать вещи .net. Благодарим вас за помощь и предложения. Джон. – Hex440bx