В общем, вам нужно разгрузить его в фоновый поток. Самый простой способ сделать это с помощью Task.Run
, особенно если вам не нужен возврат:
Task.Run(() => {
// save image data to file system
});
return File(resizedImageStream, MimeUtility.GetMimeMapping("image.png"));
Task.Run
запустит новый поток для выполнения работы, содержащейся в лямбда-выражении, и, поскольку здесь этого не ожидается, обработка вашего кода будет продолжена до строки return
.
Однако это наивный подход. Любые исключения будут проглочены, поэтому сохранение изображения может полностью потерпеть неудачу и восстановить его невозможно. Так как это только для целей кэширования, это не может быть проблемой. Если это не удастся, то в худшем случае вы просто создадите его снова в следующий раз. Честно говоря, даже на механическом жестком диске со скоростью 5400 об / мин сохранение образа должно занимать считанные миллисекунды и даже быстрее на типичном диске серверного класса или SSD. Вероятно, вы потратите больше тиков на процесс, чем просто сохраните файл напрямую.