מדריך Windows Service בעברית- כתיבה

מתחילים! 
נפתח את visual studio ונבחר New Project>Visual C#>Windows>Windows Service וניתן לו את השם "TheWindowsServiceProject". לחץ OK. 
יצירת פרויקט
נוצרו לנו 2 קבצים- Program.cs, ו Service1.cs. 
נפתח את Program.cs, בו נמצאת פעולת ה Main שפועלת ראשונה בפרויקט. שים לב לקוד. בקוד נוצר מערך מסוג ServiceBase, ומאותחל עם אובייקט אחד מסוג Service1 (שזה בעצם השירות שלנו!) לאחר מכן  ע"י הפעולה הסטטית ServiceBase.Run, מופעלים כל השירותים. (אתה מבין בעצם שתוכל להוסיף עוד שירות, ולהוסיף אותו במערך..) 
static void Main() 
{ 
ServiceBase[] ServicesToRun; 
ServicesToRun = new ServiceBase[]  
 
new Service1()  
}; 
ServiceBase.Run(ServicesToRun); 
} 
כעת נשנה את שם השירות, כדי שנזכור את ההתייחסות אליו. לחץ על השירות (Service1.cs) ב"סייר הפתרון" (אל תשאל אותי למה קוראים לזה ככה..) והחלף את שמו ל"TheService". בתיבת הדו שיח שתופיע, ותשאל אם לשנות את כל ההניות לאותו שם, בחר כמובן OK. תוכל לראות שאכן שם השירות השתנה גם בקובץ Program.cs. 
חשוב לציין שהפעולה Run מפעילה את השירות בתהליך משלו, ועוברת לשורה הבאה. במקרה שלנו, תוכנת בקרה מפעילה את השירות, ואם תוסיף הרבה קוד לפני פעולת Run התוכנה מוגבלת לזמן כלשהו עד הפעלת השירות, ובמקרה כזה היא תעצור לפני הגעת השירות. 
מאפייני השירות: 
פתח את TheService.cs, ויופיע לך חלון אפור. לחץ עליו ותגש לטבלת המאפיינים (Properties). 
  • ServiceName- שם השירות, נכתוב שם "MyServiceRunning". שם השירות זה השם שיופיע בטבלת השירותים של Windows. שים לב! חשוב לשנות את השם בכל יצירת Windows Service, משום שהשארת 2 שירותים עם אותו שם תגרום להם להתנגש. 
  • AutoLog- כאשר מוגדר כ True (ברירת מחדל), השירות יטפל בשבילך בהודעות עבור התחלה, הפסקה וכו'. מומלץ להשאיר כך, כדי לא לקבל מידע רב מידי. 
  • מאפייני Can- כשתגדיר מאפיין כזה כTrue, תצטרך להוסיף שיטה שתגיף לאירוע שהמאפיין מוגד עבורו. 
קוד:  
לחץ פעמיים על השטח האפור שבשירות, ותקבל את מחלקת השירות. שים לב ל2 פעולות- OnStart ו OnStop. די מובן שהם פועלות בהתחלה ובעצירה, בהתאמה.. שים לב שהמחלקה יורשת מ ServiceBase, שמחייבת ליישם את 2 השיטות האלה... 
כעת נוסיף קוד. נבצע כתיבה ליומן האירועים כל דקה. מומלץ להסתכל בפרטי המחלקה EventLog לפני ותוך כדי. 
  1. ייבא את מרחב השמות System.Timers ע"י הוספת משפט using לאיזור הusingים. 
  2. הצהר על אובייקט מסוג Timer בשם timer1, ואתחל אותו בפונקצייה הבונה של השירות, תן לו לפעול כל דקה. (6000 אלפית שנייה). 
  3. הוסף לאירוע Elapsed שלו את הפונקצייה timer1_Elapsed. 
  4. במתודות OnStart ו OnStop הפעל את הפונקציות Start ו Stop של הטיימר. 
  5. שים את הקוד הזה במתודה timer1_Elapsed- 

string message = "My Service: " 
+ DateTime.Now.ToShortDateString() + " " 
+ DateTime.Now.ToShortTimeString(); 
this.EventLog.WriteEntry(message,EventLogEntryType.Information); 
הקוד שלי נראה כך: 
קוד סופי
האובייקט EventLog: 
האובייקט שייך למחלקה EventLog. תפקיד המחלקה הוא לרשום הודעות ביומן האירועים. 
כתבנו הודעה, ושלחנו אותה. שים לב להדרת סוג ההודעה.