비동기 메서드가 포함 된 API로 PIN 장치와 통합됩니다. 예를 들어 이들 중 하나는 GetStatus라고 불리며, 전달 된 상태를 매개 변수로 사용하여 DeviceStateChangedEvent를 발생시킵니다.비동기 메서드에 동기 래퍼 사용하기
저는 비동기 적이 지 않은 인터페이스를 갖고 싶습니다. 인터페이스에서 GetStatus를 호출하면 실제로 이벤트를 발생 시켜서 해당 데이터를 전달할 수 있습니다.
public class MSRDevice
{
StatusInfo _status;
bool _stateChangedEventCompleted = false;
IPAD _ipad; // <-- the device
public MSRDevice()
{
//Initialize device, wire up events, etc.
}
public StatusInfo GetStatus()
{
_ipad.GetStatus() // <- raises StatusChangedEvent
while(!_stateChangedEventCompleted);
_stateChangedEventCompleted = false;
return _status;
}
void StateChangedEvent(object sender, DeviceStateChangeEventArgs e)
{
_status = e.StatusInfo;
}
}
이가 더 나은 솔루션을이 또는이 문제를 해결하는 좋은 방법입니다
나는 이런 식으로 뭔가를 할 수있는 생각 해요?
합니다. 기다릴 수 있니? –
'DeviceStateChangedEvent' 이벤트는'GetStatus'에 대한 호출과 동기화되어 있습니까? 좀 더 명확하게,이 이벤트의 가능한 순서 :'GetStatus','GetStatus','DeviceStateChangedEvent','DeviceStateChangedEvent' –