Поменять приоритет процесса запущенного приложения и отобразить в textbox - C#
Формулировка задачи:
Привет, есть такая проблема: программа запускает процесс и выводит в textbox его приоритет. Дальше нужно открыть диспетчер задач, найти этот процесс и поменять там его приоритет, затем вернуться в выполняемую программу и обновить textbox и там должен вывестись актуальный приоритет, который мы поменяли в диспетчере.
Process proc;
public void NewProc() // Метод, запускаемый в отдельном потоке
{
System.Windows.Forms.Control.CheckForIllegalCrossThreadCalls = false;
proc = new Process();
proc.StartInfo.FileName = "C:\\Users\\Сергей\\Desktop\\Учеба\\ИСИС\\LABS\\LABS\\Windows\\Примеры\\LRS\\Child.exe";
proc.Start(); // Запускаем процесс
tbID.Text = Convert.ToString(proc.Id); // Получаем id процесса и выводим в textbox
//tbPriorClass.Text = Convert.ToString(proc.PriorityClass); // Получаем и выводим приоритет процесса
while (!proc.WaitForExit(1000));
tbExitCode.Text = Convert.ToString(proc.ExitCode); // Получаем ExitCode
}
private void btCreateProc_Click(object sender, EventArgs e) // Процесс запускается в отдельном потоке
{
Thread th = new Thread(NewProc);
th.Start();
// OpenProcFunction();
// closeHandFunction();
}
--------------------------------------------------------------------------
private void btnRefreshPriority_Click(object sender, EventArgs e) //Обновление Приоритета
{
tbPriorClass.Text = Convert.ToString(proc.PriorityClass);
}
Например, я запускаю процесс и нажимаю btnRefreshPriority_Click - прога выводит приоритет. Далее, после того как я меняю его в диспетчере я снова нажимаю на btnRefreshPriority_Click и должен получить новый приоритет
Решение задачи: «Поменять приоритет процесса запущенного приложения и отобразить в textbox»
textual
Листинг программы
Process proc;
public void NewProc()
{
proc = Process.Start(@"C:\Users\Сергей\Desktop\Учеба\ИСИС\LABS\LABS\Windows\Примеры\LRS\Child.exe");
tbID.Text = Convert.ToString(proc.Id);
proc.WaitForExit();
tbExitCode.Invoke((Action)(
() => tbExitCode.Text = proc.ExitCode.ToString()
));
}
private void btCreateProc_Click(object sender, EventArgs e)
{
Thread th = new Thread(NewProc);
th.Start();
}
private void btnRefreshPriority_Click(object sender, EventArgs e)
{
proc.Refresh(); // Обновляем информацию о процессе
tbPriorClass.Text = proc.HasExited ? "Процесс завершился" : proc.PriorityClass.ToString();
}