C# как HTTP серверу вернуть ответ от Background Worker
HttpListener принимает GET запрос
if (GET["makereport"] != null){
}
есть BackgroundWorker который должен вернуть строку
public void makeReport_bg(object sender, DoWorkEventArgs e){
//тут долгие расчеты и формирование строки для ответа
string result="result";
}
void makeReport_completed(object sender, RunWorkerCompletedEventArgs e){
}
response.ContentType = "text/html";
response.ContentLength64 = buffer.Length;
Stream output = response.OutputStream;
output.Write(buffer, 0, buffer.Length);
output.Close();
как передать эту строку в response?
Ответы (1 шт):
Автор решения: Alexey Adadurov
→ Ссылка
Если нельзя переписать генератор отчета под async/await, используйте Parallel.Invoke, это проще и нагляднее чем BackgroundWorker. В качесте Action используйте лямбда-функцию, из которой и верните результат прямо в локальную переменную в коде обработки HTTP запроса.
Документация: https://docs.microsoft.com/en-us/dotnet/api/system.threading.tasks.parallel.invoke?view=netcore-3.1