我正在尝试了解WPF应用程序的一般流程,对我来说并非一切都清楚,所以,请帮助我理解以下内容:
如果我想要我的数据库轮询WPF应用程序中的Timer不是从我的主窗口的代码隐藏文件启动的,而是从另一个单独的类启动,我应该如何实现它?
这个类应该以某种方式与类后面的主窗口代码连接吗?哪些进程(用户操作除外)可以实例化这个单独的类,以及(用户操作的一部分)可以调用启动Timer的方法?
在这个Timer的位置可以是任何方法,重要的是要了解应用程序流和类对象结构的一般架构原理。
答案 0 :(得分:1)
默认情况下,WPF应用程序首先调用App
类。如果您不想将计时器连接到主窗口(您的原因是什么?),您可以在应用程序的Startup
事件处理程序中启动计时器。
public partial class App : Application
{
private void Application_Startup(object sender, StartupEventArgs e)
{
// Instantiate your class and start the timer
}
}
并在App.xaml文件中:
<Application ... Startup="Application_Startup">...</Application>
答案 1 :(得分:1)
回应你的评论:
我使用BackgroundWorker
在后台执行数据库轮询方法。然后,您可以使用计时器或UI中的控件关闭该方法,而不必担心您不恰当地触摸UI线程。如果将它封装在一个类中,则可以将命令绑定到启动它的方法,并完全取消代码隐藏。