Я теперь заблокирован этой проблемой весь день, читаю тысячи результатов Google, но, похоже, ничто не отражает мою проблему или даже не подходит к ней ... Я надеюсь, что у любого из вас есть толчок в правильном направлении дляme.
Я написал клиент-серверное приложение (так что больше похоже на 2 приложения) - клиент собирает данные о своей системе, а также снимок экрана, сериализует все это в поток XML (изображение в видеbyte [] - array]) и регулярно отправляет это на сервер.Сервер получает поток (через tcp), десериализует xml в информационный объект и показывает информацию в форме окна.Этот процесс работает стабильно в течение 20-25 минут с интервалом отправки 3 секунды.При наблюдении за использованием памяти нет ничего существенного, в том числе и стабильного.Но после этих 20-25 минут сервер создает исключение StackOverflowException в точке, где десериализует tcp-поток, особенно при установке свойства Image из массива byte [].
Я тщательно искал рекурсивный или бесконечныйциклы, и что касается того, что это происходит после тысяч успешных интервалов, я вряд ли мог себе это представить.
public byte[] ImageBase
{
get
{
MemoryStream ms = new MemoryStream();
_screen.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
return ms.GetBuffer();
}
set
{
if (_screen != null) _screen.Dispose(); //preventing well-known image memory leak
MemoryStream ms = new MemoryStream(value);
try
{
_screen = Image.FromStream(ms); //<< EXCEPTION THROWING HERE
}
catch (StackOverflowException ex) //thx to new CLR management this wont work anymore -.-
{
Console.WriteLine(ex.Message + Environment.NewLine + ex.StackTrace);
}
ms.Dispose();
ms = null;
}
}
Я надеюсь, что больше кода будет ненужным, или он может стать очень сложным ...
Пожалуйста, помогите, я понятия не имею больше
thx Крис