Ich lade AppendBlob Inhalt mit DownloadText
Methode und ich habe ein Speicherleck. Ist es schon jemandem passiert? Der Code, den ich verwende:Speicherleck mit AppendBlob
private string[] GetBlobLines(CloudAppendBlob blob)
{
string text = "";
try
{
lock (_blobContainerLock)
{
text = blob.DownloadText();
}
}
catch (Exception e)
{
WriteToTable(MessageType.ERROR, "Error reading log lines: " + e.Message);
}
return text.Split('\n'); ;
}
public string GetLastLogRows(uint count)
{
var sb = new StringBuilder();
var blob = _currentBlob;
int lineCount = 0;
int blobOffset = 0;
while (lineCount < count)
{
var lines = GetBlobLines(blob);
var blobLineCount = lines.Count();
var i = blobLineCount - 1;
while ((lineCount < count) && (i > -1))
{
sb.AppendLine(lines[i--]);
lineCount++;
}
if (lineCount < count)
{
blobOffset++;
blob = _blobContainer.GetAppendBlobReference($"{BLOB_PREFIX}{_currentBlobIdx - blobOffset}");
if (!blob.Exists())
break;
}
}
return sb.ToString();
}
Sie haben wahrscheinlich einen Programmierfehler. Können Sie Ihren Code posten? Ich schätze, du verpasst eine Verwendung. – Peter
Ich kann die DownloadText-Methode mit Argumenten in der Microsoft-Dokumentation https://msdn.microsoft.com/en-us/library/microsoft.windowsazure.storage.blob.cloudappendblob.aspx nicht finden, ist dies eine eigene Erweiterungsmethode, die Sie implementiert haben ? Oder verwenden Sie eine ältere Version der Speicher-DLLs? – Peter
Nein, alle 4 Parameter sind standardmäßig Null. – azrael