2015-02-26 4 views
-1

я иметь какой-то приложение, которое монитор процессора и памяти usage.When Я положил это:С #/В то время как бесконечный цикл

double currentMemFree = (int)perfMemCount.NextValue(); 
progBarMem.Value = (int)(totMem1 - currentMemFree); 
double currentCpuPercentage = (int)perfCpuCount.NextValue(); 
progBarCpu.Value = (int)currentCpuPercentage; 

обычно рядом с InitializeComponent(); Это работает, но это просто загрузить MEM использования при запуске, и это значение есть 4ever.When я пишу это так:

while(true) 
{ 
double currentMemFree = (int)perfMemCount.NextValue(); 
progBarMem.Value = (int)(totMem1 - currentMemFree); 
double currentCpuPercentage = (int)perfCpuCount.NextValue(); 
progBarCpu.Value = (int)currentCpuPercentage; 
Thread.Sleep(1000); 
} 

Программа не start.It начать отладку, но программа не запускается. Когда я нажимаю F5, на панели «status» написано: Загрузка символов для ... и этого материала. Благодарю.

+0

Хорошее время для изучения ** Задача ** s http://dotnetcodr.com/2014/01/01/5-ways-to-start-a-task-in-net-c/ – EZI

ответ

1

Это из-за этой линии Thread.Sleep(1000); Это заставляет ваш поток спать в течение 1 секунды, и он никогда не перестает спать из-за бесконечного цикла. Вы должны поместить эту логику вне потока пользовательского интерфейса, поэтому обновление происходит в фоновом потоке, не мешая вашему пользовательскому интерфейсу.

Существует много способов справиться с этим ... Например, Threads, BackgroundWorker, Task, async/await ... У всех есть свои плюсы и минусы. Сделайте некоторые исследования, попробуйте их и выберите тот, который больше всего подходит вашим потребностям.

+0

Спасибо. Я но я не знаю всех этих вещей, которые вы сказали, но я постараюсь сделать это в Google :) –

+1

@ SlavoBaňas Возможно, также работает таймер. – LarsTech

Смежные вопросы