Я пытаюсь реализовать модель, в которой родительский объект раскручивает новый дочерний объект со свойством List <>. Родитель будет добавлять элементы в список <>, в то время как дочерний элемент обрабатывает элементы в списке <>. Это будет асинхронно с родительским элементом, добавляющим элементы в разное время, в то время как дочерние элементы просто перемешивают элементы в List <> и затем бездействуют всякий раз, когда List <> исчерпан. Родителю не нужно ждать завершения дочернего метода, родитель просто вызывает дочерний метод, а затем ожидает поступления следующей информации для обновления List <> дочернего метода.
В идеале каждый ребенок должен сообщить родителю (обратный вызов), когда он слишком долго простаивал, чтобы родитель мог убить этого ребенка.
Чтобы оба метода обрабатывались одновременно, я понимаю, что каждый из них должен быть в отдельном потоке. Может быть, у кого-то есть пример кода, которым он может поделиться, чтобы направить меня в правильном направлении. Я только что наткнулся на новую (для меня) библиотеку System.Threading.Tasks.Parallel и изучаю ее.
Я знаю, что мог бы реализовать это как два отдельных процесса, каждый из которых работает в одной и той же очереди (таблица БД или что-то подобное), но я бы предпочел не идти по этому пути, если это просто невозможно сделать с помощью C # и отдельных потоков. .
ОБНОВЛЕНИЕ : Из ответа Рахула я нашел эту статью, которая была очень полезна на нескольких примерах: Обзор BlockingCollection
ОБНОВЛЕНИЕ : Эта статья о вариациях задачи также была полезна для понимания управления потоками: Обзор задачи