Task.Run
запустит код в другом потоке, что, вероятно, не то, что вам нужно.
Почему бы просто не вернуть Task.CompletedTask
:
public override Task WriteResponseBodyAsync(OutputFormatterWriteContext context, Encoding selectedEncoding)
{
Hl7.Fhir.Serialization.FhirJsonSerializer ser = new Hl7.Fhir.Serialization.FhirJsonSerializer();
using (System.IO.StreamWriter sw = new System.IO.StreamWriter(context.HttpContext.Response.Body))
{
using (Newtonsoft.Json.JsonWriter jw= new Newtonsoft.Json.JsonTextWriter(sw))
{
ser.Serialize((Hl7.Fhir.Model.Base)context.Object, jw);
}
}
return Task.CompletedTask;
}
Также с вашим примером, метод может вернуться до того, как ser.Serialize
закончится, в результате чего jw
, sw
и, возможно, даже context
будут удалены.