0

サービスの開始と停止のコードを持っています

始める:

ServiceController service = new ServiceController("MyService");
service.Start();
var timeout = new TimeSpan(0, 0, 5); // 5seconds
service.WaitForStatus(ServiceControllerStatus.Running, timeout);
btnTxt = "Stop Service";

止まる:

ServiceController service = new ServiceController("MyService");
service.Stop();
var timeout = new TimeSpan(0, 0, 5); // 5seconds
service.WaitForStatus(ServiceControllerStatus.Stopped, timeout);
btnTxt = "Start Service";

Windows フォーム アプリケーションでこのコードを直接使用し、visula スタジオを管理者として実行していたとき、正常に動作していました。しかし今、私はクラス ライブラリを作成し、フォームでクラス ライブラリからメソッドを呼び出しています。cs ファイル。そのため、「コンピューター '.' でサービス Myservice を開始できません」という例外が発生します。考えられる問題を誰か助けてもらえますか? クラス ライブラリ内の他のすべてのメソッドは、それ以外の場合は正常に動作しています。

4

2 に答える 2

0

サービスには「デスクトップと対話する」権限がなく、Form.cs はこの権限を必要とするライブラリを参照するため、サービスは開始できません。

現在、サービスをデバッガーのコンソール アプリとして実行するか、それ以外の場合は「適切な」サービスとして実行する非常に便利なソリューションが利用可能です。

于 2013-03-22T11:45:10.707 に答える
0

コードを変更して、少なくともログを記録します。

テイク例外のトライキャッチを追加できますか

try{

// your code
}
catch (Exception ex)
{
    System.Diagnostics.Trace.WriteLine(ex.ToString());
}

ここにex.messageを貼り付けます

于 2013-03-22T11:45:40.450 に答える