Async Timeout UWP - PullRequest
       20

Async Timeout UWP

0 голосов
/ 19 октября 2019

Ссылочный поток, принятый ответ Асинхронное ожидание завершения задачи с таймаутом

Мой метод UART_receive () возвращает строку. Как вывести строку из задачи тайм-аута?
Сейчас она, очевидно, не работает. Без задания тайм-аута моя последовательная связь работает нормально.

using System;
using Windows.Storage.Streams;              //Uart Seriell
using Windows.Devices.Enumeration;          //UART Seriell
using Windows.Devices.SerialCommunication;  //UART Seriell

public MainPage()
{
    this.InitializeComponent();

    Serial();
}

public async void Serial()
{
    //configure serial setting
    //configure serial setting

    while (true)
    {
        UART_send("+");

        //receive
        int timeout = 1000;
        var task1 = UART_receive();

        if (await Task.WhenAny(task1, Task.Delay(timeout)) == task1)
        {
            statusbar_main.Text = "ok";
        }
        else
        {
            statusbar_main.Text = "not ok";
        }
        string rxBuffer = Convert.ToString(task1);
    }
}

private async Task<string> UART_receive()
{
    const uint maxReadLength = 13;

    uint bytesToRead = await dataReader.LoadAsync(maxReadLength);
    string rxBuffer = dataReader.ReadString(bytesToRead);

    return rxBuffer;
}

1 Ответ

1 голос
/ 20 октября 2019

Как получить строку из задачи тайм-аута?

string rxBuffer = await task1

...