Задать вопрос

Как в .NET 2.0 перехватить системное исключение нехватки виртуальной памяти?

В процессе использования сторонних неуправляемых библиотек, возможны большие издержки по памяти. Для общего повышения надежности ПО необходимо выполнить перезагрузку системы при превышении объема встроенной оперативной памяти, как это возможно осуществить. NET? Имеется ли механизм перехватить системное диалоговое окно в программе «Нехватка виртуальной памяти»?
  • Вопрос задан
  • 3219 просмотров
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 5
@deleted-Brazier
Можно запустить .NET приложение вручную из C++, тогда у вас будет полный контроль над жизненным циклом .NET машины и возможность перехватывать любые критические ошибки — StackOverflow, OutOfMemory и т.п.

Вот пример:
code.msdn.microsoft.com/CppHostCLR-e6581ee0

UPDATE:
Каюсь невнимательно читал вопрос. Мой ответ совсем о другом :(
Ответ написан
Комментировать
askeet
@askeet Автор вопроса
Спасибо за ответы. Была идея насчет реализации общего мониторинга по памяти в приложении, судя по всему его реализация здесь будет оптимальна. Осталось только техническая сторона частота опроса и прочее, в случае выделения большого блока памяти превышающего предел памяти.
На счет проверки почему GС не понял. Но утечка именно при начальном доступе(вызов функций) в длл. Может можно её полностью времено выгружать из памяти?
Например, для доступа используется класс.
public class DLL{
 ....
        [DllImport(VIDEODLL, EntryPoint = "#6", CallingConvention = CallingConvention.Cdecl)]
        public static extern byte dllTestConnection(string address); // проверка соединения с сервером.
....
} 
Ответ написан
Комментировать
Roman_Pekhov
@Roman_Pekhov
Я бы вовсе не писал никакого кода, а настроил сборщик данных типа оповещение.

Берём инструкцию Создание группы сборщиков данных для мониторинга счетчиков производительности

В пункте 6a применяем счётчик «Память \ Доступно МБ».

Ниже в параграфе «Чтобы настроить оповещения» пункт 5 можем не делать вовсе, а в пункте 6 указываем команду shutdown /r

Устроит ли такой подход?
Ответ написан
Комментировать
askeet
@askeet Автор вопроса
Назначение: Windows 7, Windows Server 2008 R2, Windows Vista
Дело в том что в качестве целевой системы используется сборка на базе Windows XP SP3. Поэтому данное решение здесь неприменимо.
Ответ написан
Комментировать
Roman_Pekhov
@Roman_Pekhov
Что Вы такой нецелеустремлённый… Вариант для XP могли бы нагуглить самостоятельно.

Настройка административных оповещений в Windows XP
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы