בעבודה עם WindowsService קיימת אי נוחות בסביבת הפיתוח.
אי אפשר סתם כך להריץ אותו ב VisualStudio (לא ניתן ללחוץ F5 ולהריץ).
יש צורך להוסיף שורה שטוענת את ה Debugger , זו שורה שנוספת לקוד על כל המשתמע מכך, ויש גם לדאוג שלא תופיע בסביבת Realese.
לא ניתן להדפיס הודעות ל Console
סדרת פוסטים זו , נועדה כדי לפתור בעיות אלו.
הרצת ה Service כ Console בזמן debug.
כדי להריץ את ה Service בלחיצת F5 (או סתם כך משורת הפקודה) , יש ליצור הבחנה בין הסביבה בה רצה האפליקציה כ Service לבין הסביבה בה רצה האפליקציה שלא כ Service.
הפתרון הפשוט הוא, לבצע אבחנה האם למשתמש יש אינטראקציה עם שלחן העבודה. למי אין? ל WindowsService (אלא אם כן הוגדר אחרת – ולזה ניתן פתרון אחר).
בעת עליית המערכת נבדוק:
if (Environment.UserInteractive())בדיקה זו תספק כמעט את כל הפתרון, וכך נוכל לבדל בין שתי סביבות ההרצה.
if (Environment.UserInteractive)
{
RunServiceInConsole();}
else
{
RunAsWindowsService();}
המתודה RunAsWindowsService תספק את המימוש הרגיל
private static void RunService()
{
ServiceBase.Run(new[] { new MyService() });
}Read more: Yitzhak Gootvilig's Blog
0 comments:
Post a Comment