نصب و ایجاد Windows Service در#C

یکشنبه 29 آذر 1394

Windows Service یک اپلیکیشن مستقل است که به طور خودکار یا به صورت دستی شروع شده و کار مشخصی را کامل می کند. ما می توانیم با استفاده از Start ، Restart و Stop سرویس را مدیریت کنیم. سرویس هیچ نوع رابط کاربری برای مدیریت ویژگی هایش ندارد. سرویس بر روی سیستم ایجاد شده و میزبانی می شود.

نصب و ایجاد Windows Service در#C

 Windows Service اساسا اپلیکیشنی است که در پس زمینه(back ground) و روی task های مختلف اجرا می شود. برخی اوقات زمانی که سیستم روشن می شود به صورت خودکار شروع می شد، و برخی اوقات به صورت دستی Start می شود. تمام Windows Service ها از طریق Service Control Manager کنترل می شوند.

ایجاد Windows Service

Visual Studio را باز کرده از قسمت File گزینه New انتخاب شده و سپس Project را انتخاب کنید. این کار یک پنجره Project جدید باز می کند به طوری که می توانید انواع مختلف پروژه را انتخاب کنید.

به  Visual C#رفته و Classic Desktop را از پنجره بعدی انتخاب و ، Windows Service را کلیک کنید.


این کار یک Windows Service اضافه می کند. نام Service1.cs را به TestService.cs تغییر دهید.


کد Program.cs را در زیر ببینید، این کد مسئول اجرای Windows Service می باشد.

قسمت TestService.cs(طراحی) را بازکرده و یک کنترل Timer اضافه کنید.


TestService.cs را باز کرده و کد را به صورت زیر تغییر دهید. شما باید این logic را برای پردازش برخی کارها روی OnStart و OnStop انجام دهید.

using System;  

using System.Collections.Generic;  

using System.ComponentModel;  

using System.Data;  

using System.Diagnostics;  

using System.IO;  

using System.Linq;  

using System.ServiceProcess;  

using System.Text;  

using System.Threading.Tasks;  

namespace MyFirstWindowsService  

{  

public partial class TestService: ServiceBase  

{  

System.Timers.Timer timeDelay;  

int count;  

public TestService()  

{  

InitializeComponent();  

timeDelay = new System.Timers.Timer();  

timeDelay.Elapsed += new System.Timers.ElapsedEventHandler(WorkProcess);  

}  

public void WorkProcess(object sender, System.Timers.ElapsedEventArgs e)  

{  

string process = "Timer Tick " + count;  

LogService(process);  

count++;  

}  

protected override void OnStart(string[] args)  

{  

LogService("Service is Started");  

timeDelay.Enabled = true;  

}  

protected override void OnStop()  

{  

LogService("Service Stoped");  

timeDelay.Enabled = false;  

}  

private void LogService(string content)  

{  

FileStream fs = new FileStream(@ "d:\TestServiceLog.txt", FileMode.OpenOrCreate, FileAccess.Write);  

StreamWriter sw = new StreamWriter(fs);  

sw.BaseStream.Seek(0, SeekOrigin.End);  

sw.WriteLine(content);  

sw.Flush();  

sw.Close();  

}  

}  

} 


در کد بالا، شما می توانید ببینید که سرویس روی متد OnStart شروع شده و روی متد OnStop متوقف می شود. در اینجا باید یک سیستم Logging برای ورود کارها جهت انجام اضافه شود.

حالا وقت آن است که Installer را برای نصب سرویس اضافه کنیم. به View طراحی TestService.cs رفته و بر روی screen راست کلیک کرده و Add Installer را انتخاب کنید، سپس نام ProjectInstaller را قرار دهید.

زمانی که بر روی Add Installer کلیک کنید، به صورت خودکار ProjectInstaller.cs را با دو کامپوننت جدید اضافه می کند. که یکی ServiceProcessInstaller1 و دیگری ServiceInstaller1 می باشد.

به Property با  نام ServiceProcessInstaller1 رفته و Account type را به Local System تغییر دهید:

حالا به ServiceInstaller1 رفته و گزینه Property را انتخاب و ServieName برای سرویس تغییر دهید.


حالا پروژه را Build کرده و به محل build جایی که می توانید .exe را برای windows service پیدا کنید، بروید،

حالا می توانید آن را نصب کنید:


برای نصب Windows Service، صفحه Command Prompt را در حالت Administrator باز کرده و به مکان زیر بروید جایی که windows service فایل service .exe را ایجاد کرده و در اینجا می توانید از InstallUtil.exe ، InstallUtil.exe “MyFirstWindowsService.exe برای نصب سرویس استفاده کنید.


برای دیدن نصب سرویس به program رفته و Services.msc را در قسمت search پروژه بنویسید. در اینجا شما می توانید سرویس خود را با نام " My First Windows Servic" پیدا کرده و در سمت چپ با استفاده از گزینه Start  می توانید سرویس را شروع کنید:


وقتی که سرویس در حال شروع است می توانید دو گزینه Stop و Restart را هم ببینید :

D:\TestServiceLog.txt to را باز کرده و فرایند Log گیری Windows Service را مشاهده کنید.


زمانی که بر روی Stop کلیک کنید، در فایل Log می توانید ببینید که سرویس متوقف شده است.

آموزش سی شارپ

برنامه نویسان

نویسنده 3355 مقاله در برنامه نویسان
  • C#.net
  • 6k بازدید
  • 6 تشکر

کاربرانی که از نویسنده این مقاله تشکر کرده اند

در صورتی که در رابطه با این مقاله سوالی دارید، در تاپیک های انجمن مطرح کنید