我有一个要求,我需要检查是否有任何记录已更改,这取决于我需要提醒用户。因此,每 5 秒使用一次计时器,我试图从数据库中进行验证并向用户显示警报窗口。工作得很好。
问题是,如果用户长时间处于空闲状态。随着时间的推移,我会收到多个警报窗口。(考虑每 2 秒的数据更改)。
所以我需要知道警报窗口是否已经打开,如何获取打开的窗口的实例,我可以对其进行一些操作。
在这里,我不想创建任何单个实例。请让我知道是否有任何方法可以直接在 Silverlight 中完成。
我有一个要求,我需要检查是否有任何记录已更改,这取决于我需要提醒用户。因此,每 5 秒使用一次计时器,我试图从数据库中进行验证并向用户显示警报窗口。工作得很好。
问题是,如果用户长时间处于空闲状态。随着时间的推移,我会收到多个警报窗口。(考虑每 2 秒的数据更改)。
所以我需要知道警报窗口是否已经打开,如何获取打开的窗口的实例,我可以对其进行一些操作。
在这里,我不想创建任何单个实例。请让我知道是否有任何方法可以直接在 Silverlight 中完成。
Assuming you are using Telerik windows (because question is tagged Telerik), try
RadWindowManager.Current.CloseAllWindows();
Or if you need to have more control, you can iterate thru the currently open windows using
RadWindowManager.Current.GetWindows()
您可以通过 Application.Current.Windows 进行枚举(包括您的应用程序创建的所有窗口)。您可以在那里找到您的警报窗口并将其置于前台或创建新窗口。
在您的应用程序中将您的子窗口创建为单例(声明私有成员),然后相应地打开和关闭它,并确保释放您的实例(等于 null)。有了它,您只需检查您的“子窗口”是否与 null 不同,这意味着它是打开的,如果不是,那么您创建一个实例并打开它。