Метод CreateBounded
Channel.CreateBounded с
ёмкостью 1 принимает только один
элемент без чтения. Второй
TryWrite
даёт false. Без лимита -
CreateUnbounded.
Синтаксис
Channel<int> channel = Channel.CreateBounded<int>(1);
Пример
Давайте запишем 1 и проверим
вторую попытку:
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
Пример
Давайте прочитаем элемент и убедимся,
что в канале был 1:
using System;
using System.Threading.Channels;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var channel = Channel.CreateBounded<int>(1);
channel.Writer.TryWrite(1);
channel.Writer.TryWrite(2);
int res = await channel.Reader.ReadAsync();
Console.WriteLine(res);
}
}
Результат выполнения кода:
1
Пример
Давайте после чтения записать
2:
using System;
using System.Threading.Channels;
using System.Threading.Tasks;
class Program
{
static async Task Main()
{
var channel = Channel.CreateBounded<int>(1);
channel.Writer.TryWrite(1);
await channel.Reader.ReadAsync();
bool res = channel.Writer.TryWrite(2);
Console.WriteLine(res);
}
}
Результат выполнения кода:
True
Смотрите также
-
метод
CreateUnbounded,
канал без предела -
метод
TryWrite,
запись без ожидания -
метод
ReadAsync,
освободить место -
Channel,
класс, где объявлен метод