WMIを使用してリモートマシンでサービスを停止しています:
protected override void Execute()
{
ConnectionOptions connectoptions = new ConnectionOptions();
connectoptions.Username = RemoteMachineUsername;
connectoptions.Password = RemoteMachinePassword;
ManagementScope scope = new ManagementScope(@"\\" + RemoteMachineName + @"\root\cimv2");
scope.Options = connectoptions;
SelectQuery query = new SelectQuery("select * from Win32_Service where name = '" + ServiceName + "'");
using (ManagementObjectSearcher searcher = new
ManagementObjectSearcher(scope, query))
{
ManagementObjectCollection collection = searcher.Get();
foreach (ManagementObject service in collection)
{
if (service.GetPropertyValue("State").ToString().ToLower().Equals("running"))
{
//Stop the service
service.InvokeMethod("StopService", null);//HOW TO WAIT FOR THIS TO FINISH?
}
}
}
}
現在、このメソッドはサービスが停止するずっと前に終了しました。私の質問は、サービスが停止するのをどのように待つことができ、サービスが成功したかどうかをどのように知ることができるかということです。言い換えれば、私はこれを同期してやりたいのです。
ありがとう!