데이터를 USB HID 클래스 장치로 전송하는 WinForms 응용 프로그램을 작성 중입니다. 내 응용 프로그램을 찾을 수있는 우수한 일반 HID 라이브러리 6.0 사용 여기를 . 간단히 말해서, 장치에 데이터를 써야 할 때 이것이 호출되는 코드입니다.
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();
}
}
코드가 while 루프에서 빠지면 장치에서 일부 데이터를 읽어야합니다. 그러나 장치가 바로 응답 할 수 없으므로 계속 진행하기 전에이 통화가 돌아올 때까지 기다려야합니다. 현재 존재하므로 RequestToGetInputReport ()는 다음과 같이 선언됩니다.
private async void RequestToGetInputReport()
{
// lots of code prior to this
int bytesRead = await GetInputReportViaInterruptTransfer();
}
가치가있는 것에 대한 GetInputReportViaInterruptTransfer () 선언은 다음과 같습니다.
internal async Task<int> GetInputReportViaInterruptTransfer()
불행히도, 나는 .NET 4.5의 새로운 비동기 / 대기 기술의 작동에 익숙하지 않습니다. 나는 await 키워드에 대해 조금 읽었고 RequestToGetInputReport () 내부의 GetInputReportViaInterruptTransfer () 호출이 대기 할 것이라는 인상을 받았지만 RequestToGetInputReport () 호출과 같지 않습니다. while 루프를 거의 즉시 다시 입력하기 때문에 자체적으로 기다리고 있습니까?
아무도 내가보고있는 행동을 분명히 할 수 있습니까?
void
하는Task
것이 었습니다.