Verileri bir USB HID sınıfı cihaza aktaran bir WinForms uygulaması yazıyorum. Benim uygulama burada bulunabilir mükemmel Genel HID kitaplığı v6.0 kullanır . Özetle, cihaza veri yazmak gerektiğinde, bu çağrılan kod:
private async void RequestToSendOutputReport(List<byte[]> byteArrays)
{
foreach (byte[] b in byteArrays)
{
while (condition)
{
// we'll typically execute this code many times until the condition is no longer met
Task t = SendOutputReportViaInterruptTransfer();
await t;
}
// read some data from device; we need to wait for this to return
RequestToGetInputReport();
}
}
Kodum while döngüsünün dışına çıktığında, aygıttan bazı verileri okumam gerekiyor. Ancak, cihaz hemen yanıt veremiyor, bu yüzden devam etmeden önce bu aramanın geri dönmesini beklemem gerekiyor. Şu anda var olduğundan, RequestToGetInputReport () şu şekilde bildirilir:
private async void RequestToGetInputReport()
{
// lots of code prior to this
int bytesRead = await GetInputReportViaInterruptTransfer();
}
Değer için, GetInputReportViaInterruptTransfer () bildirimi şöyle görünür:
internal async Task<int> GetInputReportViaInterruptTransfer()
Ne yazık ki, .NET 4.5'teki yeni zaman uyumsuz / beklemede olan teknolojilerin çalışmalarını çok iyi bilmiyorum. Daha önce await anahtar kelime hakkında biraz okuma yaptım ve bana GetInputReportViaInterruptTransfer () çağrısında RequestToGetInputReport () içinde beklemek (ve belki de?) Çağrısı gibi görünüyordu ama RequestToGetInputReport () çağrısı gibi görünüyordu Kendisi bekliyor çünkü while döngüsüne hemen giriyorum?
Gördüğüm davranışı açıklığa kavuşturan var mı?
void
içinTask
size söylediği gibi sadece.