@@ -657,13 +657,25 @@ public virtual RestResponse EndRequest(IAsyncResult result)
657
657
return webResult . AsyncState as RestResponse ;
658
658
}
659
659
660
+ public virtual RestResponse EndRequest ( IAsyncResult result , TimeSpan timeout )
661
+ {
662
+ var webResult = EndRequestImpl ( result , timeout ) ;
663
+ return webResult . AsyncState as RestResponse ;
664
+ }
665
+
660
666
public virtual RestResponse < T > EndRequest < T > ( IAsyncResult result )
661
667
{
662
668
var webResult = EndRequestImpl < T > ( result ) ;
663
669
return webResult . AsyncState as RestResponse < T > ;
664
670
}
665
671
666
- private WebQueryAsyncResult EndRequestImpl ( IAsyncResult result )
672
+ public virtual RestResponse < T > EndRequest < T > ( IAsyncResult result , TimeSpan timeout )
673
+ {
674
+ var webResult = EndRequestImpl < T > ( result , timeout ) ;
675
+ return webResult . AsyncState as RestResponse < T > ;
676
+ }
677
+
678
+ private WebQueryAsyncResult EndRequestImpl ( IAsyncResult result , TimeSpan ? timeout = null )
667
679
{
668
680
var webResult = result as WebQueryAsyncResult ;
669
681
if ( webResult == null )
@@ -696,12 +708,19 @@ private WebQueryAsyncResult EndRequestImpl(IAsyncResult result)
696
708
697
709
if ( ! webResult . IsCompleted )
698
710
{
699
- webResult . AsyncWaitHandle . WaitOne ( ) ;
711
+ if ( timeout . HasValue )
712
+ {
713
+ webResult . AsyncWaitHandle . WaitOne ( timeout . Value ) ;
714
+ }
715
+ else
716
+ {
717
+ webResult . AsyncWaitHandle . WaitOne ( ) ;
718
+ }
700
719
}
701
720
return webResult ;
702
721
}
703
722
704
- private WebQueryAsyncResult EndRequestImpl < T > ( IAsyncResult result )
723
+ private WebQueryAsyncResult EndRequestImpl < T > ( IAsyncResult result , TimeSpan ? timeout = null )
705
724
{
706
725
var webResult = result as WebQueryAsyncResult ;
707
726
if ( webResult == null )
@@ -734,7 +753,14 @@ private WebQueryAsyncResult EndRequestImpl<T>(IAsyncResult result)
734
753
735
754
if ( ! webResult . IsCompleted )
736
755
{
737
- webResult . AsyncWaitHandle . WaitOne ( ) ;
756
+ if ( timeout . HasValue )
757
+ {
758
+ webResult . AsyncWaitHandle . WaitOne ( timeout . Value ) ;
759
+ }
760
+ else
761
+ {
762
+ webResult . AsyncWaitHandle . WaitOne ( ) ;
763
+ }
738
764
}
739
765
return webResult ;
740
766
}
0 commit comments