当我启动我的应用程序时,我需要检查我的某个服务是否正在运行。如果服务没有运行,那么我必须允许用户启动服务然后继续执行。如果用户选择不启动服务,那么我必须退出应用程序。每10秒我必须弹出消息来启动服务,在此期间程序执行不应该继续。下面是我编写的代码。我正在运行的服务有一个事件处理程序,它通知服务何时可用(事件处理程序是WindowsServiceAvailableEventHandler)。
我这里有两个问题
我的代码:
this.windowsService.ServiceAvailable += this.WindowsServiceAvailableEventHandler
While (!CheckifServiceStarted())
{
DialogResult dlgResult = MessageBox.Show("Service is not Started.Please start Service to continue", "Start Service", MessageBoxButtons.YesNo);
if (dlgResult == DialogResult.Yes)
{
Thread.Sleep(10000);
}
else
{
System.Environment.Exit(0);
}
}
private void DataServicesAvailableEventHandler(object sender, EventArgs e)
{
//How to Resume or Interrupt the Thread here?
}
答案 0 :(得分:1)
您可以将Thread.Sleep
替换为ManualResetEvent.WaitOne
来表示处理程序中的更改,如下所示:
private ManualResetEvent serviceAvailableEvent = new ManualResetEvent(false);
this.windowsService.ServiceAvailable += this.WindowsServiceAvailableEventHandler
While (!CheckifServiceStarted())
{
DialogResult dlgResult = MessageBox.Show("Service is not Started.Please start Service to continue", "Start Service", MessageBoxButtons.YesNo);
if (dlgResult == DialogResult.Yes)
serviceAvailableEvent.WaitOne(10000);
else
System.Environment.Exit(0);
}
private void DataServicesAvailableEventHandler(object sender, EventArgs e)
{
serviceAvailableEvent.Set();
}
至于进度条,例如,请检查this question。