Утечка памяти в LibCurlNet - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Есть программа написана на с# для доступа к значениям регистров устройства с помощью LibCurlNet. Опрашивает все норм но возникает проблема утечки памяти. Помогите разобраться в чем проблема. Код программы и скрин диспетчера задач ниже.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using SeasideResearch.LibCurlNet;
using System.Threading;
 
namespace curlcsharp
{
    class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                connection();
                Thread.Sleep(3);
                
            }
        }
 
        public static Int32 OnWriteData(Byte[] buf, Int32 size, Int32 nmemb,
            Object extraData)
        {
            Console.Write(System.Text.Encoding.UTF8.GetString(buf));
            return size * nmemb;
        }
        public static void  connection()
{
 try
            {
                Curl.GlobalInit((int)CURLinitFlag.CURL_GLOBAL_ALL);
 
                Slist headers = new Slist();
                headers.Append("X-WH-APIKEY: apikey");
                headers.Append( "Accept: application/json");
                headers.Append("X-WH-START: 1391165350");
                headers.Append("X-WH-END: 1391186951");
                headers.Append("X-WH-CONNS: 1");
                headers.Append("Content-Type: application/json");
             
                Easy easy = new Easy();
               
                Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData);
                easy.SetOpt(CURLoption.CURLOPT_URL, "192.168.82.194/api/register-values");//url adress
                easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER,headers);
                easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf);
                easy.Perform();
                easy.Cleanup();
 
                Curl.GlobalCleanup();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex);
            }
}
    }
    
}
скрин 1 скрин 2

Решение задачи: «Утечка памяти в LibCurlNet»

textual
Листинг программы
public static void  connection()
{
    Slist headers = null;
    Easy easy = null;
    try
    {
        headers = new Slist();
        headers.Append("X-WH-APIKEY: apikey");
        headers.Append( "Accept: application/json");
        headers.Append("X-WH-START: 1391165350");
        headers.Append("X-WH-END: 1391186951");
        headers.Append("X-WH-CONNS: 1");
        headers.Append("Content-Type: application/json");
 
        easy = new Easy();
        Easy.WriteFunction wf = new Easy.WriteFunction(OnWriteData);
        easy.SetOpt(CURLoption.CURLOPT_URL, "192.168.82.194/api/register-values");//url adress
        easy.SetOpt(CURLoption.CURLOPT_HTTPHEADER,headers);
        easy.SetOpt(CURLoption.CURLOPT_WRITEFUNCTION, wf);
        easy.Perform();
    }
    catch (Exception ex)
    {
        Console.WriteLine(ex);
    }
    finally
    {
        if (easy != null) easy.Cleanup();
        if (slist != null) slist.FreeAll();
    }
}

Оцени полезность:

14   голосов , оценка 4 из 5