Можно ли прервать / отменить операцию асинхронного чтения FileStream.Beginread - PullRequest
1 голос
/ 07 декабря 2011

Я хочу управлять микроконтроллером STM32 с помощью интерфейса USB. Ян Аксельсон (http://www.lvr.com/hidpage.htm#MyExampleCode) создал несколько приложений, чтобы показать использование класса USB HID, который теперь является моим основным источником.

Чтобы проверить, есть ли на моем устройстве ожидающие данные, я создал поток, вызывающий подпрограмму Filestream.BeginRead(). Теперь я хочу прервать / отменить этот запрос, потому что он все еще открыт / заблокирован после выхода из этого потока (установка переменной для отмены цикла потока). Поэтому мне интересно, как выполнить отмену этого BeginRead() вызова. Или у вас есть идея, как проверить непрерывно отправленные данные USB-устройства?

// USB read data from device thread
while (boRunThread)
{
    if (boStopThread)
    {
        // perform clean-up, cancel BeginRead
        // ... Abort(ar)???
    }
    if (botransfer == false)
    {
        botransfer = true;  // Signal pending transfer
        ar = fileStreamDeviceData.BeginRead(inputReportBuffer, 0, inputReportBuffer.Length, callb, inputReportBuffer);
    }
}
...