Код: Выделить всё
public class Program
{
static async Task Main(string[] args)
{
ProducerConsumerManager manager = new ProducerConsumerManager();
DataGenerator generator = new DataGenerator();
int data = 0;
_ = Task.Run(async () =>
{
for (int i = 0; ; i++)
{
data = generator.GenerateData();
await manager.ProduceAsync(data);
}
});
while (true)
{
var message = await manager.ConsumeAsync();
Console.WriteLine(message);
}
}
}
public class DataGenerator
{
private Random rand = new Random();
public int GenerateData()
{
return rand.Next(0, 200);
}
}
public class ProducerConsumerManager
{
private static Channel _channel = Channel.CreateUnbounded();
private ChannelWriter _writer = _channel.Writer;
private ChannelReader _reader = _channel.Reader;
public async Task ProduceAsync(T data)
{
await _writer.WriteAsync(data);
}
public async Task ConsumeAsync()
{
return await _reader.ReadAsync();
}
}
Подробнее здесь: https://stackoverflow.com/questions/790 ... mory-hikes