Метод WriteAsync
ChannelWriter.WriteAsync в
неограниченном канале завершается
сразу. В ограниченный полный канал без
читателя ждать нельзя - в примерах
используют
CreateUnbounded.
Мгновенная попытка -
TryWrite.
Синтаксис
await writer.WriteAsync(item);
Пример
Давайте записать 1 и
2, затем прочитать FIFO:
using System;
using System.Threading.Channels;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var channel = Channel.CreateUnbounded<int>();
await channel.Writer.WriteAsync(1);
await channel.Writer.WriteAsync(2);
Console.WriteLine(await channel.Reader.ReadAsync());
Console.WriteLine(await channel.Reader.ReadAsync());
}
}
Результат выполнения кода:
1
2
Пример
Давайте записать одно значение и снять его:
using System;
using System.Threading.Channels;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var channel = Channel.CreateUnbounded<int>();
await channel.Writer.WriteAsync(12345);
int res = await channel.Reader.ReadAsync();
Console.WriteLine(res);
}
}
Результат выполнения кода:
12345
Пример
Давайте записать в ограниченный канал после чтения:
using System;
using System.Threading.Channels;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var channel = Channel.CreateBounded<int>(1);
await channel.Writer.WriteAsync(1);
int old = await channel.Reader.ReadAsync();
await channel.Writer.WriteAsync(2);
int res = await channel.Reader.ReadAsync();
Console.WriteLine(old);
Console.WriteLine(res);
}
}
Результат выполнения кода:
1
2
Смотрите также
-
метод
TryWrite,
запись без ожидания -
метод
ReadAsync,
снять записанное -
ChannelWriter,
класс, где объявлен метод -
метод
CreateBounded,
канал с лимитом