我有一个aurelia客户端,通过我的API从我的asp.net服务器获取图像。该图像由包含Emgu CV UMat var的服务器提供。在我的控制器中使用以下方法,我得到图像并正确显示。
这种方法导致内存泄漏,我似乎无法进入orgin(不调用方法,意味着没有泄漏):
更新,我尝试了Mawg的建议但是当我关闭流时它不会显示图像。泄漏消失了,但没有图像。
[System.Web.Http.HttpGet]
[System.Web.Http.Route("dummymethod3")]
public HttpResponseMessage Get2()
{
HttpResponseMessage response = new HttpResponseMessage();
try
{
Console.WriteLine("Get image 3");
ddEngine.sem.WaitOne();
var memoryStream = new MemoryStream();
ResultImage.Bitmap.Save(memoryStream, ImageFormat.Png);
memoryStream.Position = 0;
var result = new HttpResponseMessage(HttpStatusCode.OK);
result.Content = new StreamContent(memoryStream);
result.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");
memoryStream.Close();
memoryStream.Dispose();
ddEngine.sem.Release();
return result;
}
catch
{
Console.WriteLine("Ex");
}
return response;
}
我试图在代码中的几个地方调用收集器,如:
GC.Collect();
GC.WaitForPendingFinalizers();
执行此操作时会释放资源但内存使用量正在缓慢增加。不调用get方法时没有增加!
我的客户端代码如下所示:
updateImageSrc() {
let dt = new Date();
let baseUrl = "http://localhost:8080/api/status/dummymethod3";
this.imagePath = baseUrl + "?t=" + dt.getTime();
}
和html
<img id="img" src.bind="imagePath"/>
欢迎任何建议!