При фильтрации сообщений через IMessageFilter расходуется память - C#
Формулировка задачи:
Здравствуйте. Использую IMessageFilter для перехвата нажатия горячих клавиш.
Обнаружил странное поведение приложения. Когда нажимаю горячие клавиши оно начинает потреблять память.
Раньше использовал другой механизм перехвата нажатия, проблемы этой не было. Поэтому проблема точно в
PreFilterMessage.
Количество потребляемой памяти напрямую зависит от количества кода и переменных в методе.Через некоторое время потребление памяти прекращается. Но в рабочем приложении к этому времени объем памяти с 3мб вырастает до 7мб. Уничтожение переменных и сборка мусора не помогает вообще.
В чем может быть проблема и есть ли способы её решения?
public bool PreFilterMessage(ref Message m) { if (m.Msg == hotKeysMessg) { if ((int)(m.WParam) == k) // | { // | Чем больше тут кода MessageBox.Show("k"); // | Тем больше памяти потребляется. } // | Как будто значения переменных куда-то кэшируются. if ((int)(m.WParam) == l) { MessageBox.Show("l"); } if ((int)(m.WParam) == m) { MessageBox.Show("m"); } return false; } }
Решение задачи: «При фильтрации сообщений через IMessageFilter расходуется память»
textual
Листинг программы
str = null; arr = null; GC.Collect();