Bước 1 -
Tạo một ứng dụng dịch vụ windows mới.
Bước 2 -
Để chạy một Dịch vụ Windows, bạn cần cài đặt Trình cài đặt, trình cài đặt này sẽ đăng ký nó với Trình quản lý kiểm soát dịch vụ. Nhấp chuột phải vào Service1.cs [Design] và AddInstaller.
Bước 3 -
Nhấp chuột phải vào ProjectInstaller.cs [Thiết kế] và chọn mã chế độ xem.
using System; using System.Collections; using System.Collections.Generic; using System.ComponentModel; using System.Configuration.Install; using System.Linq; using System.Threading.Tasks; namespace DemoWindowsService{ [RunInstaller(true)] public partial class ProjectInstaller : System.Configuration.Install.Installer{ public ProjectInstaller(){ InitializeComponent(); } } }
Nhấn F12 và chuyển đến phần triển khai của lớp InitializeComponent. Thêm tên dịch vụ và mô tả sẽ là tên của dịch vụ windows trong quá trình cài đặt.
private void InitializeComponent(){ this.serviceProcessInstaller1 = new System.ServiceProcess.ServiceProcessInstaller(); this.serviceInstaller1 = new System.ServiceProcess.ServiceInstaller(); // // serviceProcessInstaller1 // this.serviceProcessInstaller1.Account = System.ServiceProcess.ServiceAccount.LocalService; this.serviceProcessInstaller1.Password = null; this.serviceProcessInstaller1.Username = null; // // serviceInstaller1 // this.serviceInstaller1.Description = "My Demo Service"; this.serviceInstaller1.ServiceName = "DemoService"; // // ProjectInstaller // this.Installers.AddRange(new System.Configuration.Install.Installer[] { this.serviceProcessInstaller1, this.serviceInstaller1}); }
Bước 4 -
Bây giờ, chúng ta hãy thêm logic bên dưới để ghi dữ liệu nhật ký vào tệp văn bản trong lớp Service1.cs.
using System; using System.IO; using System.ServiceProcess; using System.Timers; namespace DemoWindowsService{ public partial class Service1 : ServiceBase{ Timer timer = new Timer(); public Service1(){ InitializeComponent(); } protected override void OnStart(string[] args){ WriteToFile("Service started at " + DateTime.Now); timer.Elapsed += new ElapsedEventHandler(OnElapsedTime); timer.Interval = 5000; timer.Enabled = true; } protected override void OnStop(){ WriteToFile("Service stopped at " + DateTime.Now); } private void OnElapsedTime(object source, ElapsedEventArgs e){ WriteToFile("Service recall at " + DateTime.Now); } public void WriteToFile(string Message){ string path = @"D:\Demo"; if (!Directory.Exists(path)){ Directory.CreateDirectory(path); } string filepath = @"D:\Demo\Log.txt"; if (!File.Exists(filepath)){ using (StreamWriter sw = File.CreateText(filepath)){ sw.WriteLine(Message); } } else { using (StreamWriter sw = File.AppendText(filepath)){ sw.WriteLine(Message); } } } } }
Bước 5 (Cài đặt) -
Bây giờ chúng ta sẽ cài đặt dịch vụ windows của mình bằng dấu nhắc lệnh. Mở commandprompt với tư cách quản trị viên và cung cấp lệnh dưới đây.
cd C:\Windows\Microsoft.NET\Framework\v4.0.30319
Mở thư mục chứa tệp exe dịch vụ windows của chúng tôi và chạy lệnh dưới đây.
InstallUtil.exe C:\Users\[UserName] source\repos\DemoWindowsService\DemoWindowsService\bin\Debug\ DemoWindowsService.exe
Bây giờ, hãy mở Dịch vụ từ menu ứng dụng của windows.
Chúng tôi có thể thấy rằng dịch vụ windows của chúng tôi đã được cài đặt và bắt đầu chạy như mong đợi.
Kết quả bên dưới cho thấy rằng dịch vụ đang chạy và kết nối nhật ký với tệp văn bản như mong đợi.