@@ -26,11 +26,9 @@ private class ClientInvocationHandler : WampCalleeProxyInvocationHandler
2626 private readonly IWampRpcOperationCatalogProxy mCatalogProxy ;
2727 private readonly IWampClientConnectionMonitor mMonitor ;
2828
29- private readonly TaskCompletionSource < object > mDisconnectionTaskCompletionSource =
30- new TaskCompletionSource < object > ( ) ;
31-
32- private readonly ManualResetEvent mDisconnectionWaitHandle =
33- new ManualResetEvent ( false ) ;
29+ private TaskCompletionSource < object > mDisconnectionTaskCompletionSource ;
30+
31+ private ManualResetEvent mDisconnectionWaitHandle ;
3432
3533 private Exception mDisconnectionException ;
3634 private readonly CallOptions mEmptyOptions = new CallOptions ( ) ;
@@ -44,7 +42,10 @@ public ClientInvocationHandler(IWampRpcOperationCatalogProxy catalogProxy,
4442 {
4543 mCatalogProxy = catalogProxy ;
4644 mMonitor = monitor ;
45+ mDisconnectionTaskCompletionSource = new TaskCompletionSource < object > ( ) ;
46+ mDisconnectionWaitHandle = new ManualResetEvent ( false ) ;
4747
48+ mMonitor . ConnectionEstablished += OnConnectionEstablished ;
4849 mMonitor . ConnectionError += OnConnectionError ;
4950 mMonitor . ConnectionBroken += OnConnectionBroken ;
5051 }
@@ -53,6 +54,12 @@ public ClientInvocationHandler(IWampRpcOperationCatalogProxy catalogProxy,
5354
5455 #region Private Methods
5556
57+ private void OnConnectionEstablished ( object sender , WampSessionEventArgs e )
58+ {
59+ mDisconnectionTaskCompletionSource = new TaskCompletionSource < object > ( ) ;
60+ mDisconnectionWaitHandle = new ManualResetEvent ( false ) ;
61+ }
62+
5663 private void OnConnectionBroken ( object sender , WampSessionCloseEventArgs e )
5764 {
5865 Exception exception = new WampConnectionBrokenException ( e ) ;
@@ -68,7 +75,7 @@ private void OnConnectionError(object sender, WampConnectionErrorEventArgs e)
6875 private void SetException ( Exception exception )
6976 {
7077 mDisconnectionException = exception ;
71- mDisconnectionTaskCompletionSource . SetException ( exception ) ;
78+ mDisconnectionTaskCompletionSource . TrySetException ( exception ) ;
7279 mDisconnectionWaitHandle . Set ( ) ;
7380 }
7481
0 commit comments