从webapi获取图像会导致内存泄漏

时间:2017-08-20 09:02:37

标签: javascript c# asp.net aurelia emgucv

我有一个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"/> 

欢迎任何建议!

0 个答案:

没有答案