Метод TryWrite
ChannelWriter.TryWrite сразу
возвращает false, если канал
полон или закрыт. В
CreateBounded(1)
второй вызов без чтения не проходит.
С ожиданием -
WriteAsync.
Синтаксис
bool ok = writer.TryWrite(item);
Пример
Давайте проверить ограниченный канал:
using System;
using System.Threading.Channels;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var channel = Channel.CreateBounded<int>(1);
bool first = channel.Writer.TryWrite(1);
bool second = channel.Writer.TryWrite(2);
Console.WriteLine(first);
Console.WriteLine(second);
}
}
Результат выполнения кода:
True
False
Пример
Давайте записать в неограниченный канал дважды:
using System;
using System.Threading.Channels;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var channel = Channel.CreateUnbounded<int>();
bool first = channel.Writer.TryWrite(1);
bool second = channel.Writer.TryWrite(2);
Console.WriteLine(first);
Console.WriteLine(second);
}
}
Результат выполнения кода:
True
True
Пример
Давайте вызвать TryWrite после
Complete:
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
Смотрите также
-
метод
WriteAsync,
запись с ожиданием -
метод
TryRead,
симметричное чтение -
метод
CreateBounded,
ёмкость канала -
ChannelWriter,
класс, где объявлен метод