2016-05-06 11 views
2

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

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

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

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

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

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

+0

'thread выполняет только вызов и ждет ответа.' Doesnt означает, что он не использует время обработки во время ожидания? так зачем его приостанавливать? – x4rf41

+0

На самом деле я запускаю сначала несколько потоков (10, 20), чтобы получать изображения асинхронно. Эти требования не являются срочными. Иногда я запускаю еще одну задачу очень срочно: к сожалению, этот медленный. Я не могу поставить приоритет среди заданий, говоря: это не срочно, это другое срочно. Я не могу справиться с диспетчеризацией среди задач ... Именно по этой причине меня интересует приостановка/перезапуск несрочных задач ... –

ответ

0

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

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

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

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