2009-12-17 23 views
6

deadline_timer dışarı zaman yerine daima verilen boost::asio::deadline_timerDaha iyi boost asio örnek

örneklerinden daha iyi bir örnek sonra kulüpler ve close yöntemini çağırın. Bir zamanlayıcı cancel() arama çalıştı ama bu async_wait geçirilen işlev hemen çağrılacak neden olur.

nedir bir zaman uyumsuz tcp istemci zamanlayıcılar ile çalışan doğru yoldur?

+1

Bu davranışın ardındaki neden yoktur. Async_wait'e yapılan her çağrı bir tamamlama işleyicisi ile eşleştirilir. İptal çağrısı bunu etkilemez. –

cevap

20

Bir zamanlayıcı() iptal çağırarak hemen çağrılacak async_wait geçirilen işlevi neden olur söz. Bu beklenen davranıştır ama eğer zamanlayıcı iptal edildi olmadığını belirlemek için zamanlayıcı işleyicisi geçirilen hatayı kontrol edebilirsiniz unutmayın. Zamanlayıcı iptal edildiyse, operation_aborted geçirilir. Örneğin:

void handleTimer(const boost::system::error_code& error) { 
    if (error == boost::asio::error::operation_aborted) { 
     std::cout << "Timer was canceled" << std::endl; 
    } 
    else if (error) { 
     std::cout << "Timer error: " << error.message() << std::endl; 
    } 
} 

Umarım bu yardımcı olur. Değilse, aradığınız özel örnek nedir?

+0

io_service.stop() zamanlayıcı iptal mu? –

İlgili konular