@@ -55,34 +55,53 @@ public void Result<TMessage>(IWampFormatter<TMessage> formatter, YieldOptions de
55
55
{
56
56
ResultDetails resultDetails = GetResultDetails ( details ) ;
57
57
this . Result ( formatter , resultDetails ) ;
58
+ UnregisterConnectionClosedIfNeeded ( details ) ;
58
59
}
59
60
60
61
public void Result < TMessage > ( IWampFormatter < TMessage > formatter , YieldOptions details , TMessage [ ] arguments )
61
62
{
62
63
ResultDetails resultDetails = GetResultDetails ( details ) ;
63
64
this . Result ( formatter , resultDetails , arguments ) ;
65
+ UnregisterConnectionClosedIfNeeded ( details ) ;
64
66
}
65
67
66
68
public void Result < TMessage > ( IWampFormatter < TMessage > formatter , YieldOptions details , TMessage [ ] arguments ,
67
69
IDictionary < string , TMessage > argumentsKeywords )
68
70
{
69
71
ResultDetails resultDetails = GetResultDetails ( details ) ;
70
72
this . Result ( formatter , resultDetails , arguments , argumentsKeywords ) ;
73
+ UnregisterConnectionClosedIfNeeded ( details ) ;
74
+ }
75
+
76
+ private void UnregisterConnectionClosedIfNeeded ( YieldOptions details )
77
+ {
78
+ if ( details . Progress != true )
79
+ {
80
+ mMonitor . ConnectionClosed -= OnConnectionClosed ;
81
+ }
71
82
}
72
83
73
84
public void Error < TResult > ( IWampFormatter < TResult > formatter , TResult details , string error )
74
85
{
75
86
Caller . CallError ( RequestId , details , error ) ;
87
+ UnregisterConnectionClosed ( ) ;
76
88
}
77
89
78
90
public void Error < TResult > ( IWampFormatter < TResult > formatter , TResult details , string error , TResult [ ] arguments )
79
91
{
80
92
Caller . CallError ( RequestId , details , error , arguments . Cast < object > ( ) . ToArray ( ) ) ;
93
+ UnregisterConnectionClosed ( ) ;
81
94
}
82
95
83
96
public void Error < TResult > ( IWampFormatter < TResult > formatter , TResult details , string error , TResult [ ] arguments , TResult argumentsKeywords )
84
97
{
85
98
Caller . CallError ( RequestId , details , error , arguments . Cast < object > ( ) . ToArray ( ) , argumentsKeywords ) ;
99
+ UnregisterConnectionClosed ( ) ;
100
+ }
101
+
102
+ private void UnregisterConnectionClosed ( )
103
+ {
104
+ mMonitor . ConnectionClosed -= OnConnectionClosed ;
86
105
}
87
106
88
107
public event EventHandler Disconnected ;
0 commit comments