Приостановить / перезапустить потоки по требованию в WPF/C#

В приложении WPF у меня есть пул потоков (каждый поток - это вызов веб-службы REST, возвращающий образ base64), который я хотел бы очень точно "контролировать".

Эти потоки являются асинхронными, и я хотел бы иметь возможность приостановить / возобновить каждый из них.

  • Использовать что-то вроде CancellationToken - не вариант, я думаю, потому что каждый поток делает только вызов и ждет ответа.

  • Я только что увидел, что в классе Thread => Suspend & Restart устарели / устарели.

Так что, если у кого-то есть предложения?

Спасибо заранее.

1 ответ

Таким образом, тип управления, который вы ищете с вашими потоками, не совсем осуществим из-за природы потоков. Выполнение потока ставится в очередь ОС и его планировщиком. Это означает, что вы не можете контролировать, когда поток будет активно работать. Однако волокна похожи на потоки с той разницей, что приложение отвечает за планирование и переключение потоков. Волокна идеализируются как сопрограммы в моно, и библиотека win32 имеет некоторую их поддержку..NET Framework, однако, не обеспечивает большую поддержку для этого.

Некоторые люди здесь в сообществе спрашивали о волокнах, но их поиски были в основном бесплодными. ТАК сообщение

Этот ответ может привести вас в направлении, которое может помочь вам в ваших поездках. В нем упоминается создание собственного планировщика для библиотеки параллельных задач.

Я не очень-то изучал эту концепцию, так как у меня еще не было в ней необходимости, но дизайн программы возврата доходов представляется альтернативой.

Другие вопросы по тегам