Код: Выделить всё
public class Example
{
private readonly Channel queue = Channel.CreateBounded(1);
public void Produce()
{
ChannelWriter writer = queue.Writer;
Console.WriteLine("Writing first value...");
writer.WriteAsync(7);
Console.WriteLine("Writing second value...");
writer.WriteAsync(13);
Console.WriteLine("Finishing writing...");
writer.Complete();
}
public async Task Consume()
{
await Task.Delay(5000);
ChannelReader reader = queue.Reader;
await foreach (int value in reader.ReadAllAsync())
Console.WriteLine(value);
Console.WriteLine("Done...");
}
}
Код: Выделить всё
var item = new Example();
var task1 = Task.Run(() => item.Produce());
var task2 = Task.Run(() => item.Consume());
Task.WaitAll(task1, task2);
Код: Выделить всё
Writing first value...
Writing second value...
Finishing writing...
7
Done...
Не могли бы вы помочь мне понять, чего мне не хватает?
Подробнее здесь: https://stackoverflow.com/questions/783 ... r-channels