Jalankan Aplikasi Konsol .NET sebagai Perkhidmatan Windows tanpa Projek Terpisah
Dalam Windows, perkhidmatan ialah proses yang berjalan lama yang beroperasi di latar belakang. Walaupun aplikasi konsol .NET tradisional berjalan secara interaktif dalam tetingkap konsol, adalah wajar untuk menjalankannya sebagai perkhidmatan untuk operasi berterusan.
Untuk mencapai penyepaduan ini tanpa membuat projek perkhidmatan yang berasingan, pertimbangkan penyelesaian berikut:
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 } }
Penyelesaian ini menggunakan kelas ServiceBase untuk mencipta kelas perkhidmatan bersarang dalam aplikasi konsol. Kaedah OnStart dan OnStop dilaksanakan untuk mengendalikan peristiwa kitaran hayat perkhidmatan.
Environment.UserInteractive ditetapkan kepada benar untuk aplikasi konsol dan false untuk perkhidmatan secara lalai. Dengan menyemak bendera ini, aplikasi boleh menentukan persekitaran masa jalannya dan melaksanakan logik yang sesuai.
Sebagai alternatif, anda boleh memasukkan suis baris arahan untuk mengawal perkhidmatan atau kelakuan konsol secara eksplisit. Sebagai contoh, anda boleh menggunakan suis seperti "--console" untuk menjalankan aplikasi secara interaktif.
Pendekatan ini memberikan fleksibiliti untuk menjalankan binari yang sama seperti aplikasi konsol dan perkhidmatan Windows, memudahkan penyelenggaraan kod dan penempatan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjalankan Aplikasi Konsol .NET sebagai Perkhidmatan Windows Tanpa Projek Berasingan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!