Для ниже .NET 4 или WinForms в любой версии .NET
Используя Windows API Code Pack от Microsoft (как упоминал Керон), это действительно просто. Вам просто нужно использовать TaskbarManager
. Э.Г.
Чтобы начать прогресс:
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.Normal);
Чтобы обновить прогресс:
TaskbarManager.Instance.SetProgressValue(currentValue, maxProgressValue);
А когда закончите, закончите прогресс:
TaskbarManager.Instance.SetProgressState(TaskbarProgressBarState.NoProgress);
Есть еще кое-что, что вы можете сделать, но это должно помочь вам начать и, возможно, это все, что вам нужно.
Для .NET 4 и выше с WPF
Вы можете использовать System.Windows.Shell.TaskbarItemInfo . Например. в Xaml для вашего главного окна вам нужно добавить:
<Window.TaskbarItemInfo>
<TaskbarItemInfo x:Name="taskBarItemInfo" />
</Window.TaskbarItemInfo>
Затем, чтобы обновить прогресс, вы должны сделать что-то вроде:
taskBarItemInfo.ProgressState = TaskbarItemProgressState.Normal;
for (int i = 0; i < 100; i++)
{
taskBarItemInfo.ProgressValue = i / 100.0;
Thread.Sleep(50); // whatever the 'work' really is
}
taskBarItemInfo.ProgressState = TaskbarItemProgressState.None;
Не забывайте, что если вы выполняете «работу» в фоновом потоке (что, вероятно, является хорошей идеей для долго выполняющихся задач), вам необходимо переключиться обратно в поток пользовательского интерфейса, чтобы обновить панель задач.