Здравствуйте, у меня есть этот код
var queue = new BlockingCollection<int>();
queue.Add(0);
var producers = Enumerable.Range(1, 3)
.Select(_ => Task.Factory.StartNew(()=>
{
Enumerable.Range(1, queue.Count)
.ToList().ForEach(i =>
{
lock (queue)
{
if (!queue.Contains(i))
{
Console.WriteLine("Thread" + Task.CurrentId.ToString());
queue.Add(i);
}
}
Thread.Sleep(100);
});
}))
.ToArray();
Task.WaitAll(producers);
queue.CompleteAdding();
foreach (var item in queue.GetConsumingEnumerable())
{
Console.WriteLine(item.ToString());
}
Но мне нужно каждый раз, когда один поток объявляет что-то в очередь. Добавлять (i) Enumerable.Range (1, queue.Count), который нужно увеличитьтак что код выполняется до тех пор, пока не останется больше элементов, добавляемых в очередь.Я надеюсь, вы понимаете вопрос.Другими словами, мне нужно, чтобы это действие выполнялось бесконечно, пока я не скажу, чтобы оно прекратилось.Есть предложения?