私のプロジェクトではbottom
、Windows サービスを開始してチェックし、Windows サービスのステータスをtextBlock
コントロールに書き込むコントロールがあります。ただし、問題は、「Windows サービスが実行中です」、「Windows サービスが停止しています」、「Windows サービスが実行中です」と表示されることです。
これは、「A」から「B」、そして「A」のようになります。
先頭に「A」を付けずに、「B」から「A」に流れるようにしたいです。
private void btnStart_Click(object sender, RoutedEventArgs e)
{
if (ValidationHelpers.IsValid())
StartService();
else
_serviceControll.StopService();
}
private void StartService()
{
try
{
if (!_serviceIsStarted)
{
if (_serviceControll.StartService())
{
var startThread = new Thread(new ThreadStart(CheckStartService));
startThread.Start();
statusTextBlock.Text = "Offline IM service is running";
statusTextBlock.Foreground = Brushes.Black;
}
else
{
statusTextBlock.Text = "Offline IM service is stopped";
statusTextBlock.Foreground = Brushes.Red;
}
}
}
catch (Exception exception)
{
statusTextBlock.Text = "Error in starting the Offline IM service " + exception.Message.ToString();
statusTextBlock.Foreground = Brushes.Red;
}
}
private void CheckServiceStatus()
{
try
{
if (_serviceControll.CheckServiceStatus())
{
statusTextBlock.Text = "Offline IM service is running";
statusTextBlock.Foreground = Brushes.Black;
_serviceIsStarted = true;
}
else
{
statusTextBlock.Text = "Offline IM service is stopped";
statusTextBlock.Foreground = Brushes.Black;
_serviceIsStarted = false;
}
}
catch (Exception exception)
{
statusTextBlock.Text = "Error in getting the Offline IM service status " + exception.Message.ToString();
statusTextBlock.Foreground = Brushes.Red;
}
}
private void CheckStartService()
{
var set = true;
while (set)
{
if (_serviceControll.CheckServiceStatus())
{
MessageBox.Show(@"Offline IM service is started", "Offline IM Configuration Manager",
MessageBoxButton.OK, MessageBoxImage.Information);
_serviceIsStarted = true;
set = false;
}
}
return;
}
private void DispatcherTimerTick(object sender, EventArgs e)
{
if (_serviceControll != null)
{
CheckServiceStatus();
}
}
}