← Каталог
Справочник по ASP.NET — 2. Фоновые задачи
Фрагмент из «Справочник по ASP.NET»: 2. Фоновые задачи.
[HttpGet("process")]
public async Task Process()
{
var channel = Channel.CreateUnbounded<ProgressReport>();
var writer = channel.Writer;
_ = Task.Run(async () =>
{
try
{
await _progressService.ProcessDataAsync(new Progress<ProgressReport>(r => writer.TryWrite(r)), HttpContext.RequestAborted);
}
finally { writer.Complete(); }
});
Response.Headers.Append("Content-Type", "text/event-stream");
await foreach (var report in channel.Reader.ReadAllAsync())
{
await Response.WriteAsync($"Данные: {JsonSerializer.Serialize(report)}\n\n");
await Response.Body.FlushAsync();
}
} [HttpGet("process")]
public async Task Process()
{
var channel = Channel.CreateUnbounded<ProgressReport>();
var writer = channel.Writer;
_ = Task.Run(async () =>
{
try
{
await _progressService.ProcessDataAsync(new Progress<ProgressReport>(r => writer.TryWrite(r)), HttpContext.RequestAborted);
}
finally { writer.Complete(); }
});
Response.Headers.Append("Content-Type", "text/event-stream");
await foreach (var report in channel.Reader.ReadAllAsync())
{
await Response.WriteAsync($"Данные: {JsonSerializer.Serialize(report)}\n\n");
await Response.Body.FlushAsync();
}
}