私はWindowsサービスを持っています。 OnStartメソッドでは、何らかの操作を実行していますが、操作が失敗した場合はサービスを停止します。 catchブロックで、私は、下記のコードを書いています:プログラムによるWindowsサービスの停止中にエラーが発生しました
var srvc = new System.ServiceProcess.ServiceController("Scv1", "localhost");
srvc.Stop();
srvc.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Stopped);
これはよく仕事をしていませんが、Windowsが私にメッセージボックスを示しています。
---------------------------
Services
---------------------------
The xxx service on Local Computer started and then stopped. Some services stop automatically if they are not in use by other services or programs.
---------------------------
OK
---------------------------
は、私がここで間違って何かをやっているの?どのように私はメッセージボックスを抑えますか?
同じことをします。サービスを停止します。問題は、Windowsがbczをポップアップするメッセージボックスです。私はそれをプログラム的に停止しています。 – Asdfg
はい、同じことをしますが、正しく行います!私はあなたがそれをやっている方法が、プログラムがプログラム的に停止する適切な方法ではないことを伝えています。おそらくそれがあなたのメッセージボックスの問題の原因です。私のサービスは、起動時にエラーが発生したためにいつ停止するかを説明するメッセージボックスを投げたことはありません。 ServiceBaseの仕組みは分かりませんが、ネイティブサービスでは、サービスステータスをどのように設定したかによって、サービスが外部停止要求を受け付けていない場合でもSCMを介して停止コマンドを送信することさえできません。 –
あなたが言っていることを理解していません。私は自分のコードを変更し、静的変数で私のサービスのインスタンスを保持しています。私のサービスはSystem.ServiceProcess.ServiceBaseを継承しているので、Stopを呼び出すと、ServiceBase.Stopが継承されるため、ServiceBase.Stopが呼び出されます。それでもメッセージボックスは表示されます。ネイティブサービスとは何ですか? – Asdfg