2013-12-19 5 views
1

대부분의 진드기는 괜찮 BLPAPI에 진드기를 떨어 코드,하지만 꽤 자주 몇 가지 틱이없는 것입니다왜 내

의사 코드 :

Foreach Message msg in myEvent 
    { 
     if (m.hasField(BID)) 
     { 
      handlebid(m.getFieldasFloat64(BID); 
     } 

     if (m.hasField(BID_SIZE)) 
     { 

      int bidsize=m.getFieldasInt(BID_SIZE); 
      if (bidsize==0) 
      { 
        return -1; 
      } 
      handlebidsize(bidsize); 
     } 

     if (m.hasField(ASK)) 
     { 
      handleask(m.getFieldasFloat64(ASK); 
     } 

     if (m.hasField(ASK_SIZE)) 
     { 
      int asksize=m.getFieldasInt(ASK_SIZE); 
      if (asksize==0) 
      { 
        return -1; 
      } 
      handleasksize(asksize); 
     } 
} 

답변

1

이벤트가 여러 메시지

이벤트 핸들러하는 경우를 포함 할 수 있습니다 다음 루프 반복을 수행하는 대신 어떤 식 으로든 루프에서 복귀하거나 중단하면 루프 종료를 트리거 한 이벤트 이후의 모든 메시지는 처리되지 않습니다. 이러한 메시지의 모든 진드기가 될 것입니다

대가에 이벤트 처리 루프를 종료하거나 이벤트가 여러 메시지를 포함 할 수

1

글렌 Teitelbaum가 올바른지 휴식 마십시오 "떨어졌다". 틱을 떨어 뜨릴 수있는 또 다른 이유는 하나의 요청으로 여러 응답이 발생할 수 있다는 것입니다. 즉 부분 응답과 응답이 여러 개 있습니다. 두 가지 유형의 응답을 모두 처리해야하며 부분 응답 대신 응답 이벤트가 발생할 때까지 nextEvent()를 호출해야합니다.