Использовать активные объекты подобным образом - как минимум признак дурного тона, заодно источник трудноуловимых ошибок как в вашем случае.
Позволю себе несколько подправить приведенный выше код, попробуйте - вдруг поможет:
Code:TRequestStatus timerstatus; RTimer timer; timer.CreateLocal(); timer.After(timerstatus, KRetryInterval); TRequestStatus status; sock.Send(iBuffer,0,status); User::WaitForRequest(status, timerstatus); if (timerstatus != KRequestPending) { // сработал таймер - произошел таймаут sock.CancelSend(); // отменяем посылку User::WaitForRequest( status ); // нужно дождаться отмены } else { // завершился Send timer.Cancel(); // отменяем ожидание по таймеру User::WaitForRequest( timerstatus ); // нужно дождаться отмены } timer.Close()


Reply With Quote

