我目前的任务是在API中实现一些新功能,一旦所有(图像)都传输到新系统,它将最终替换现有代码。
我有一个当前不是异步的控制器
public HttpResponseMessage GetImage(long imageId)
{
//Old sync code
var imageStream = GetImage(imageId);
var response = Request.CreateResponse();
response.Content = new StreamContent(imageStream );
response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
return response;
}
当然,在此方法中已有大量同步调用DB和不同的资源。
如果我使这个方法异步并在新代码中的同步代码之前返回,旧代码是否仍然以相同的方式运行并且只是同步执行?
例如:
public async Task<HttpResponseMessage> GetImage(long imageId)
{
Stream imageStream = new MemoryStream();
var newImage = await IsNewImage(imageId);
if (newImage)
{
//Do async work
imageStream = await GetNewImage(imageId);
}
else
{
//Old sync code
imageStream = GetImage(imageId);
}
var response = Request.CreateResponse();
response.Content = new StreamContent(imageStream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
return response;
}
这样做的原因是尝试最小化触摸将要消失的旧代码,并实现新代码异步。我只是想确保在其中引入异步功能不会改变现有的同步代码?我没有创建新控制器的选项,它必须是对此实例中现有控制器的更改。