Приостановить / перезапустить потоки по требованию в WPF/C#
В приложении WPF у меня есть пул потоков (каждый поток - это вызов веб-службы REST, возвращающий образ base64), который я хотел бы очень точно "контролировать".
Эти потоки являются асинхронными, и я хотел бы иметь возможность приостановить / возобновить каждый из них.
Использовать что-то вроде CancellationToken - не вариант, я думаю, потому что каждый поток делает только вызов и ждет ответа.
Я только что увидел, что в классе Thread => Suspend & Restart устарели / устарели.
Так что, если у кого-то есть предложения?
Спасибо заранее.
1 ответ
Таким образом, тип управления, который вы ищете с вашими потоками, не совсем осуществим из-за природы потоков. Выполнение потока ставится в очередь ОС и его планировщиком. Это означает, что вы не можете контролировать, когда поток будет активно работать. Однако волокна похожи на потоки с той разницей, что приложение отвечает за планирование и переключение потоков. Волокна идеализируются как сопрограммы в моно, и библиотека win32 имеет некоторую их поддержку..NET Framework, однако, не обеспечивает большую поддержку для этого.
Некоторые люди здесь в сообществе спрашивали о волокнах, но их поиски были в основном бесплодными. ТАК сообщение
Этот ответ может привести вас в направлении, которое может помочь вам в ваших поездках. В нем упоминается создание собственного планировщика для библиотеки параллельных задач.
Я не очень-то изучал эту концепцию, так как у меня еще не было в ней необходимости, но дизайн программы возврата доходов представляется альтернативой.