У меня есть многопоточная программа, и при вызове метода Abort() или Suspend(), компилятор выбрасывает PlatformNotSupportedException. Есть ли другие короткие способы приостановить поток? C# 11, .NET 7.0
Asked
Active
Viewed 84 times
0
1 Answers
0
Это ожидаемое поведение, Suspend() вызывает PlatformNotSupportedException всегда для .NET Core и .NET 5+.
Вместо этого нужно использовать AutoResetEvent:
Когда нужно просигнализировать об остановке, вызывать
autoResetEvent.Set();
В потоке соответственно использовать:
autoResetEvent.WaitOne();
Еще об этом посмотрите здесь
demonplus
- 878
-
AutoResetEvent- штука мощная и тяжелая, и не поддерживает асинхронное ожидание. Есть более легковесные примитивы синхронизации, напримерManualResetEventSlimилиSemaphoreSlim, последний поддерживает асинхронность. – aepot Dec 24 '22 at 12:41 -
c# thread abort. Советую научится искать информацию самостоятельно, ведь это основа основ любого программиста. – EvgeniyZ Dec 24 '22 at 12:04