Метод CreateUnbounded
Channel.CreateUnbounded не отказывает
в
TryWrite,
пока канал не закрыт. С лимитом -
CreateBounded.
Обзор -
Channel.
Синтаксис
Channel<int> channel = Channel.CreateUnbounded<int>();
Пример
Давайте дважды успешно вызвать
TryWrite:
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
Пример
Давайте записать через
WriteAsync
и прочитать:
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
Пример
Давайте проверить, что после
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
Смотрите также
-
метод
CreateBounded,
канал с пределом -
ChannelWriter,
запись в канал -
ChannelReader,
чтение из канала -
Channel,
класс, где объявлен метод