Вывод ОЗУ отдельного приложения winforms c#

        System.Diagnostics.Process[] pr = Process.GetProcessesByName("Form1");
        foreach (Process process in pr)
        {
            string memory = Convert.ToString(process.WorkingSet64 / 1024);
            label1.Text = memory;
        }

System.InvalidOperationException: "Недопустимая операция в нескольких потоках: попытка доступа к элементу управления 'label1' не из того потока, в котором он был создан."

Спустя время данный код выдает ошибку (каждый раз в разное время, иногда в начале, иногда поработает немного). Нужно узнать потребление ОЗУ и обновлять в реальном времени пока работает прога. Столкнулся с еще одной проблемой - показывает общее потребление ОЗУ, а не отдельного приложения.

Вердикт - я не знаю как доработать этот код и я запутался. Дошло до того, что у меня кое как работает если продублировать код в 2 методах))). Но это бред, так что хотелось бы вашей помощи с этим вопросом. Вывод ОЗУ отдельного приложения (не обязательно Form1, хочется, чтобы можно было выбрать там браузер и тд, но этим я уже сам займусь.)


Ответы (1 шт):

Автор решения: aepot

Попробуйте вот так заменить

label1.Text = memory;

На

Dispatcher.Invoke(() =>
{
    label1.Text = memory;
});
→ Ссылка