Это было бы хорошим решением?
Нет, потому что это потратило бы впустую весь поток почти ничего.
Лучше использовать таймер в приложении WPFпредпочтительно DispatcherTimer:
var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(2) };
timer.Tick += (s, e) =>
{
if (Process.GetProcessesByName(processName).Length > 0)
{
// ...
}
};
timer.Start();
Если бы выполнялась длительная операция из потока пользовательского интерфейса, вы могли бы использовать обработчик событий async Tick
, ожидающий Task
(которыйзапустить в фоновом потоке потоков):
var timer = new DispatcherTimer { Interval = TimeSpan.FromSeconds(2) };
timer.Tick += async (s, e) =>
{
if (Process.GetProcessesByName(processName).Length > 0)
{
await Task.Run(() =>
{
// lengthy operation here which runs on a thread pool thread
});
// udate UI here
}
};
timer.Start();