При фильтрации сообщений через IMessageFilter расходуется память - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Использую IMessageFilter для перехвата нажатия горячих клавиш. Обнаружил странное поведение приложения. Когда нажимаю горячие клавиши оно начинает потреблять память. Раньше использовал другой механизм перехвата нажатия, проблемы этой не было. Поэтому проблема точно в PreFilterMessage. Количество потребляемой памяти напрямую зависит от количества кода и переменных в методе.
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;
            }
}
Через некоторое время потребление памяти прекращается. Но в рабочем приложении к этому времени объем памяти с 3мб вырастает до 7мб. Уничтожение переменных и сборка мусора не помогает вообще. В чем может быть проблема и есть ли способы её решения?

Решение задачи: «При фильтрации сообщений через IMessageFilter расходуется память»

textual
Листинг программы
str = null; 
arr = null;
GC.Collect();

Оцени полезность:

14   голосов , оценка 3.643 из 5
Похожие ответы