。
我有一个WPF程序,需要检测是否打开了另一个软件。如果它被打开,我的程序将自动连接到它:
private void Window_Loaded(object sender, RoutedEventArgs e)
{
if(!DataModel.IsConnected)
{
connect();
}
}
但是,这样,它只能在我运行 WPF 窗口之前打开该软件时建立连接。如果我想WPF程序总是可以检测软件是否打开 - 即使软件在我运行WPF窗口后打开
您需要定期调用 connect()
方法(例如使用计时器),或者让其他应用程序定期通知 WPF 应用程序。
这是一个基本示例,应该可以为您提供想法。一旦加载了窗口,它就会调用 connect()
方法,如果该方法返回 false
,它会启动一个计时器,该计时器每 1.5 秒再次调用该方法,直到该方法返回 true
。
System.Timers.Timer _timer;
private void Window_Loaded(object sender, RoutedEventArgs e)
{
if (!connect())
{
//start a timer that calls connect() at regular intervals until it returns true.
_timer = new System.Timers.Timer(TimeSpan.FromSeconds(1.5).TotalMilliseconds);
_timer.Elapsed += Timer_Elapsed;
}
}
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
{
if (connect())
{
_timer.Stop();
_timer.Dispose();
}
}