En el siguiente ejemplo se ha removido el siclo While. Usando GetCosumingEnumerable, usted obtiene un IEnumerable que bloquea hasta encontrar un nuevo elemento. De esta forma, usted puede usar foreach con su BlockingCollection para enumerar este.
using System;
using System.Collections.Concurrent;
using System.Threading.Tasks;
namespace UsandoGetConsumingEnumerable
{
class Program
{
static void Main(string[] args)
{
BlockingCollection<string> col = new BlockingCollection<string>();
Task read = Task.Run(() =>
{
foreach (string v in col.GetConsumingEnumerable())
Console.WriteLine(v);
});
Task write = Task.Run(() =>
{
while (true)
{
string s = Console.ReadLine();
if (string.IsNullOrWhiteSpace(s)) break;
col.Add(s);
}
});
write.Wait();
}
}
}
Referencia:
Exam Ref 70-483 Programming in C#
No hay comentarios.:
Publicar un comentario