А именно время простоя в котором не было переключения на окно программы.
При этом может происходит работа в других программах.
Вот вам небольшой пример на WPF:
public partial class MainWindow : Window
{
Stopwatch sw = new Stopwatch(); // счётчик времени
public MainWindow()
{
InitializeComponent();
Activated += (o, args) => sw.Start();
Deactivated += (o, args) => sw.Stop();
if (IsActive)
sw.Start();
// ну и отображение
StartIdleTimeUpdating();
}
async void StartIdleTimeUpdating()
{
while (true)
{
await Task.Delay(250);
Target.Text = sw.Elapsed.ToString();
}
}
}
<Window x:Class="Test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="Тест" Height="250" Width="250">
<TextBlock HorizontalAlignment="Center" VerticalAlignment="Center">
<Run Text="Idle time: "/><Run Name="Target"/>
</TextBlock>
</Window>
Результат:
Сборка персонального компьютера от Artline: умный выбор для современных пользователей