У меня есть эта простая функция: < /p>
Код: Выделить всё
private static async Task ReadConsoleInput(Socket socket, Encoding encoding, CancellationToken cancellationToken)
{
var inputCharacter = new char[1]; // we only input one character at a time
var convertedBytes = new byte[4]; // four should be enough for anyone!
while (!cancellationToken.IsCancellationRequested) {
var readKey = Console.ReadKey(true);
inputCharacter[0] = readKey.KeyChar;
var byteCount = encoding.GetBytes(inputCharacter, convertedBytes);
await socket.SendAsync(convertedBytes.AsMemory(0, byteCount), cancellationToken);
}
}
Код: Выделить всё
var consoleReadTask = Task.Factory.StartNew(
async () => await ReadConsoleInput(socket, encoding, tokenSource.Token),
tokenSource.Token,
TaskCreationOptions.None,
TaskScheduler.Default);
< /code>
Все функционирует правильно. Однако это кажется мне довольно странным, потому что readconsoleinput
Код: Выделить всё
var consoleReadTask = ReadConsoleInput(socket, encoding, tokenSource.Token);
< /code>
Однако это оказалось неверным. Моя программа висит (где -то еще, я не изучал ее, потому что это не главное здесь), прежде чем я когда -либо прочитал какой -либо ввод. Task.Factory.StartNew
Подробнее здесь: https://stackoverflow.com/questions/794 ... the-lambda