비동기 / 대기 이벤트

마누엘 블레이 무스

다음 시나리오가 있습니다. 하트 비트 및 기타 개체와 같은 푸시 알림을받는 TCP 클라이언트를 실행하고 있습니다. GetWeather 정보 또는 이와 유사한 것과 같은 서버에 대해 명령을 실행할 수도 있습니다. 나는 물건을받을 때마다 꽤 잘 작동하는 이벤트를 발생시킵니다. 하지만 이제는 서버에서 일부 데이터를 요청하고 서버가 올바른 개체에 응답 할 때까지 기다릴 수 있기를 원합니다. 개체를 요청하는 동안 다른 개체도 나에게 보낼 수 있습니다.

다음은 의사 코드입니다.

대신에:

TcpServer.ObjectReceived += ObjectReceivedMethod;
TcpServer.GetWeather();
public void ObjectReceived(object data)
{

}

내가 원하는:

var result = await TcpServer.GetWeather();

ObjectReceived에서 대기 메서드로 날씨 정보를 전송하려면 어떻게해야합니까?

KR 마누엘

스티븐 클리어 리

TaskCompletionSource<T>다음과 같은 을 사용하고 싶습니다.

private Dictionary<Guid, TaskCompletionSource<WeatherResponse>> _weatherRequests;

public Task<WeatherResponse> GetWeatherAsync()
{
  var messageId = Guid.NewGuid();
  var tcs = new TaskCompletionSource<WeatherResponse>();
  _weatherRequests.Add(messageId, tcs);
  _server.SendWeatherRequest(messageId);
  return tcs.Task;
}

public void ObjectReceived(object data)
{
  ...
  if (data is ServerWeatherResponse)
  {
    var tcs = _weatherRequests[data.requestId];
    _weatherRequests.Remove(data.requestId);
    tcs.SetResult(new WeatherResponse(data));
  }
}

이는 서버가 GUID ID를 사용하여 요청을 응답과 연결한다고 가정합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

비동기 대 동기화 이벤트 처리기 성능

분류에서Dev

이벤트의 비동기 기능

분류에서Dev

여러 이벤트 처리기에 대한 C # 비동기 이벤트

분류에서Dev

이벤트 핸들러, 이벤트 큐 및 비동기 동작

분류에서Dev

Xamarin의 비동기 단추 이벤트

분류에서Dev

비동기로 oncomplete 이벤트 실행

분류에서Dev

루프-비동기 이벤트 사용

분류에서Dev

camel-cdi의 비동기 이벤트

분류에서Dev

C # 모범 사례 혼란에 대한 비동기 이벤트

분류에서Dev

자바 스크립트 : 요소 onchange 이벤트 비동기 / 대기 콜백

분류에서Dev

Node.js의 이벤트 핸들러 내부에서 비동기 대기

분류에서Dev

비동기 닫기 이벤트에 대한 프록시의 응답

분류에서Dev

비동기 닫기 이벤트에 대한 프록시의 응답

분류에서Dev

Nodeunit 테스트 이벤트 기반 비동기 코드

분류에서Dev

대기 / 비동기 이상한 동작

분류에서Dev

비동기 이벤트를 기반으로 구독 관리

분류에서Dev

비동기 이벤트에서 콘솔에 쓰기

분류에서Dev

비동기 이벤트에서 다음 이벤트 발생 방지

분류에서Dev

각도 : 비동기 데이터 대기

분류에서Dev

작업이 비동기 또는 비동기 대기없이 동기입니까?

분류에서Dev

이벤트 기반 비동기 WCF 서비스 호출의 예외 처리

분류에서Dev

grpc c ++ 비동기 완료 큐 이벤트

분류에서Dev

.map 비동기 콜백 및 이벤트 루프

분류에서Dev

비동기 콜백으로 이벤트 처리

분류에서Dev

비동기 이벤트 핸들러가 여러 번 실행 됨

분류에서Dev

비동기 무효 이벤트 핸들러-설명?

분류에서Dev

elixir 및 phoenix와 비동기식 "이벤트"처리

분류에서Dev

수용체 실행의 이벤트 버스 및 비동기

분류에서Dev

이벤트 콜백 내부의 비동기 작업

Related 관련 기사

  1. 1

    비동기 대 동기화 이벤트 처리기 성능

  2. 2

    이벤트의 비동기 기능

  3. 3

    여러 이벤트 처리기에 대한 C # 비동기 이벤트

  4. 4

    이벤트 핸들러, 이벤트 큐 및 비동기 동작

  5. 5

    Xamarin의 비동기 단추 이벤트

  6. 6

    비동기로 oncomplete 이벤트 실행

  7. 7

    루프-비동기 이벤트 사용

  8. 8

    camel-cdi의 비동기 이벤트

  9. 9

    C # 모범 사례 혼란에 대한 비동기 이벤트

  10. 10

    자바 스크립트 : 요소 onchange 이벤트 비동기 / 대기 콜백

  11. 11

    Node.js의 이벤트 핸들러 내부에서 비동기 대기

  12. 12

    비동기 닫기 이벤트에 대한 프록시의 응답

  13. 13

    비동기 닫기 이벤트에 대한 프록시의 응답

  14. 14

    Nodeunit 테스트 이벤트 기반 비동기 코드

  15. 15

    대기 / 비동기 이상한 동작

  16. 16

    비동기 이벤트를 기반으로 구독 관리

  17. 17

    비동기 이벤트에서 콘솔에 쓰기

  18. 18

    비동기 이벤트에서 다음 이벤트 발생 방지

  19. 19

    각도 : 비동기 데이터 대기

  20. 20

    작업이 비동기 또는 비동기 대기없이 동기입니까?

  21. 21

    이벤트 기반 비동기 WCF 서비스 호출의 예외 처리

  22. 22

    grpc c ++ 비동기 완료 큐 이벤트

  23. 23

    .map 비동기 콜백 및 이벤트 루프

  24. 24

    비동기 콜백으로 이벤트 처리

  25. 25

    비동기 이벤트 핸들러가 여러 번 실행 됨

  26. 26

    비동기 무효 이벤트 핸들러-설명?

  27. 27

    elixir 및 phoenix와 비동기식 "이벤트"처리

  28. 28

    수용체 실행의 이벤트 버스 및 비동기

  29. 29

    이벤트 콜백 내부의 비동기 작업

뜨겁다태그

보관