[解決済み] .NETコンソールアプリケーションのWindowsサービス化
2022-04-26 06:22:15
質問
コンソールアプリケーションをWindowsサービスとして動作させたいと考えています。VS2010にはプロジェクトテンプレートがあり、コンソールプロジェクトを添付してWindowsサービスをビルドすることができます。 私は、分離したサービスプロジェクトを追加せず、可能であれば、サービスコードをコンソールアプリケーションに統合して、コンソールアプリケーションを1つのプロジェクトとして維持し、例えば、スイッチを使用してコマンドラインから実行した場合、コンソールアプリケーションとしてもWindowsサービスとしても実行できるようにしたいと思っています。
誰か、C#のコンソールアプリケーションを素早く簡単にサービスに変換できるクラスライブラリやコードスニペットを提案してくれないかな?
どのように解決するのですか?
私は通常、同じアプリをコンソールアプリケーションとして、またはサービスとして実行するために以下のテクニックを使用します。
using System.ServiceProcess
public static class Program
{
#region Nested classes to support running as service
public const string ServiceName = "MyService";
public class Service : ServiceBase
{
public Service()
{
ServiceName = Program.ServiceName;
}
protected override void OnStart(string[] args)
{
Program.Start(args);
}
protected override void OnStop()
{
Program.Stop();
}
}
#endregion
static void Main(string[] args)
{
if (!Environment.UserInteractive)
// running as service
using (var service = new Service())
ServiceBase.Run(service);
else
{
// running as console app
Start(args);
Console.WriteLine("Press any key to stop...");
Console.ReadKey(true);
Stop();
}
}
private static void Start(string[] args)
{
// onstart code here
}
private static void Stop()
{
// onstop code here
}
}
Environment.UserInteractive
は通常、コンソールアプリの場合はtrue、サービスの場合はfalseです。技術的には、ユーザーインタラクティブモードでサービスを実行することは可能なので、代わりにコマンドラインスイッチをチェックすることができます。
関連
-
[解決済み】ORA-01008: すべての変数がバインドされていません。これらはバインドされています。
-
[解決済み】Entity FrameworkからのSqlException - セッション内で他のスレッドが動作しているため、新しいトランザクションは許可されません。
-
[解決済み】aspNetCore 2.2.0 - AspNetCoreModuleV2 エラー
-
[解決済み】Microsoft.Extensions.LoggingからILoggerを解決することができない
-
[解決済み】WebResource.axdとは何ですか?
-
[解決済み] なぜList<T>を継承しないのですか?
-
[解決済み] .NETコンソールアプリケーションでアプリケーションのパスを取得するにはどうすればよいですか?
-
[解決済み] 指定されたサービスは削除するようにマークされています」エラーの解決方法
-
[解決済み] ファイルまたはアセンブリを読み込めませんでした ... 不正なフォーマットでプログラムをロードしようとしました (System.BadImageFormatException)
-
[解決済み】JavaアプリからWindowsサービスを作成する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】"The ConnectionString property has not been initialized "を修正する方法
-
[解決済み】C# ASP.NET使用時に「WebClientのリクエスト中に例外が発生しました。
-
[解決済み】Sequence contains no matching element(シーケンスにマッチする要素がない
-
[解決済み] 'IEnumerable<SelectListItem>' 型の ViewData アイテムで、キーが国であるものは存在しない。
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み】ランダムなブーリアンを生成する最速の方法
-
[解決済み】C#のequal to演算子でtextとvarcharのデータ型は互換性がない
-
[解決済み】パラメータ付きRedirectToAction
-
[解決済み】ファイルやアセンブリ、またはその依存関係の1つをロードできませんでした。
-
[解決済み] 実行ファイルからWindowsサービスを作成する