@@ -731,7 +731,7 @@ public virtual async Task OnWriteMessageAsync(XmlDictionaryWriter writer)
731
731
// otherwise EnsureWriteMessageState would get called twice. Also see OnWriteMessage()
732
732
// for the example.
733
733
await OnWriteBodyContentsAsync ( writer ) ;
734
- WriteMessagePostamble ( writer ) ;
734
+ await WriteMessagePostambleAsync ( writer ) ;
735
735
}
736
736
737
737
private void EnsureWriteMessageState ( XmlDictionaryWriter writer )
@@ -811,6 +811,15 @@ internal void WriteMessagePostamble(XmlDictionaryWriter writer)
811
811
}
812
812
}
813
813
814
+ internal async Task WriteMessagePostambleAsync ( XmlDictionaryWriter writer )
815
+ {
816
+ if ( Version . Envelope != EnvelopeVersion . None )
817
+ {
818
+ await writer . WriteEndElementAsync ( ) ;
819
+ await writer . WriteEndElementAsync ( ) ;
820
+ }
821
+ }
822
+
814
823
protected virtual IAsyncResult OnBeginWriteMessage ( XmlDictionaryWriter writer , AsyncCallback callback , object state )
815
824
{
816
825
return new OnWriteMessageAsyncResult ( writer , this , callback , state ) ;
@@ -1222,45 +1231,6 @@ protected override void OnBodyToString(XmlDictionaryWriter writer)
1222
1231
}
1223
1232
1224
1233
protected internal BodyWriter BodyWriter { get ; private set ; }
1225
-
1226
- private class OnWriteMessageAsyncResult : AsyncResult
1227
- {
1228
- private BodyWriterMessage _message ;
1229
- private XmlDictionaryWriter _writer ;
1230
-
1231
- public OnWriteMessageAsyncResult ( XmlDictionaryWriter writer , BodyWriterMessage message , AsyncCallback callback , object state )
1232
- : base ( callback , state )
1233
- {
1234
- _message = message ;
1235
- _writer = writer ;
1236
-
1237
- if ( HandleWriteBodyContents ( null ) )
1238
- {
1239
- Complete ( true ) ;
1240
- }
1241
- }
1242
-
1243
- private bool HandleWriteBodyContents ( IAsyncResult result )
1244
- {
1245
- if ( result == null )
1246
- {
1247
- result = _message . OnBeginWriteBodyContents ( _writer , PrepareAsyncCompletion ( HandleWriteBodyContents ) , this ) ;
1248
- if ( ! result . CompletedSynchronously )
1249
- {
1250
- return false ;
1251
- }
1252
- }
1253
-
1254
- _message . OnEndWriteBodyContents ( result ) ;
1255
- _message . WriteMessagePostamble ( _writer ) ;
1256
- return true ;
1257
- }
1258
-
1259
- public static void End ( IAsyncResult result )
1260
- {
1261
- AsyncResult . End < OnWriteMessageAsyncResult > ( result ) ;
1262
- }
1263
- }
1264
1234
}
1265
1235
1266
1236
internal abstract class ReceivedMessage : Message
0 commit comments