Класс ChannelWriter
ChannelWriter<T> получают из
Channel.
Запись с ожиданием -
WriteAsync,
без блокировки -
TryWrite.
Закрытие -
Complete.
Синтаксис
ChannelWriter<int> writer = channel.Writer;
await writer.WriteAsync(1);
Пример
Давайте записать число в неограниченный канал:
using System;
using System.Threading.Channels;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var channel = Channel.CreateUnbounded<int>();
ChannelWriter<int> writer = channel.Writer;
await 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.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>();
channel.Writer.Complete();
bool res = channel.Writer.TryWrite(1);
Console.WriteLine(res);
}
}
Результат выполнения кода:
False
Смотрите также
-
ChannelReader,
сторона чтения -
метод
WriteAsync,
асинхронная запись -
метод
CreateUnbounded,
создание канала -
Channel,
фабрика канала