C#继续显示任务栏进度,直到窗口获得焦点

C#继续显示任务栏进度,直到窗口获得焦点,c#,wpf,taskbar,C#,Wpf,Taskbar,我有一个WPF应用程序,它有一个在线程中运行的例程,并在任务栏图标中显示进度。任务完成后,如果窗口被隐藏,我希望继续显示任务栏状态,直到窗口具有焦点,然后将其设置为无。我怎样才能做到这一点 this.taskBarItem.ProgressState = TaskbarItemProgressState.Normal; this.taskBarItem.ProgressValue = 0.0; await Task.Run(() => DoWork(); this.taskBarIte

我有一个WPF应用程序,它有一个在线程中运行的例程,并在任务栏图标中显示进度。任务完成后,如果窗口被隐藏,我希望继续显示任务栏状态,直到窗口具有焦点,然后将其设置为无。我怎样才能做到这一点

this.taskBarItem.ProgressState = TaskbarItemProgressState.Normal;
this.taskBarItem.ProgressValue = 0.0;

await Task.Run(() => DoWork();

this.taskBarItem.ProgressValue = 1.0;
while (!System.Windows.Application.Current.MainWindow.IsActive)
{
    // Pause until Window has focus
}
this.taskBarItem.ProgressState = TaskbarItemProgressState.None;

窗口有一个激活的事件。你可以订阅它并做一些事情。也许最好取消订阅你的处理程序。抱歉,我是C#新手。你能解释一下怎么做吗?在你的xaml中有一个窗口标签。在该类型内激活=并接受建议的新事件。在代码隐藏中,您现在将拥有一个事件处理程序存根,您可以将代码放入其中。您需要为taskbaritem指定一些名称,以便可以引用它,并为其指定名称=或x:name=。然后,您可以告诉该控件做任何您喜欢的事情。例如,将其状态设置为“无”。如果您想钩住并解开eventhandler,可以这样做。Activated+=yourhandler,然后是this.Activated-=yourhandler。我建议您阅读一下wpf事件处理程序。