• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

在主窗口正忙或正在执行某些任务时打开自定义忙指示符

c/c++ 来源:Satish R 3次浏览

我的应用程序基于WPF。在主窗口正忙或正在执行某些任务时打开自定义忙指示符

任务是我需要显示一个自定义的繁忙指标,而一些工作在主窗口(因为应用程序的用户界面将冻结,直到它完成任务)。所以我特别想是如下

// Code in main window 
CustomBusyIndicator.ShowDialog(); 
//.... 
//..code that takes time 
//.... 
CustomBusyIndicator.Close(); 

所以我必须实现,必须能够灵活地在我的主要应用程序的任何地方打电话,指示繁忙的窗口。

这两点应该牢记, 1.当我告诉CustomBusyIndi​​cator,在背景中的主窗口,应运行它的任务 2.当我告诉CustomBusyIndi​​cator的CustomBusyIndi​​cator应该总是在主窗口顶部,用户必须无法使用主窗口,如果他使用Start + Tab切换到其他应用程序,并且切换回我的应用程序时,CustomBusyIndi​​cator应该位于顶部(如果未关闭)。

当任务完成后,我应该能够调用close()方法来关闭CustomBusyIndi​​cator,如代码所示。

===========解决方案如下:

容易解决

public async void Button1_Click(Object sender, RoutedEventArgs e) 
{ 
    // get a task for the dialog, but do not await here its completion 
    var dialogTask = CustomBusyIndicator.ShowDialogAsync(); 
    // await the completion of the lengthy operation 
    await SomeLengthOperationAsync(); 
    // close the dialog 
    CustomBusyIndicator.Close(); 
    // now await the completion of the dialog task 
    await dialogTask; 
} 

并且该扩展是

public static class WindowExtensions 
{ 
    public static async Task<bool?> ShowDialogAsync(this Window window) 
    { 
     await Task.Yield(); 
     return window.ShowDialog(); 
    } 
} 

版权声明:本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系管理员进行删除。
喜欢 (0)