Утечка памяти в LibCurlNet - C#
Формулировка задачи:
Доброго времени суток. Есть программа написана на с# для доступа к значениям регистров устройства с помощью LibCurlNet. Опрашивает все норм но возникает проблема утечки памяти. Помогите разобраться в чем проблема. Код программы и скрин диспетчера задач ниже.
скрин 1
скрин 2
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); } } } }
Решение задачи: «Утечка памяти в 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(); } }