Easier way to debug Windows Service project in Visual Studio

เป็น common problem ที่ทุกคนต้องเจอกันมาอย่างแน่นอน เลยขอ blog เก็บไว้เผื่ออีกหลายคนยังหาวิธีแก้ไขกันอยู่ ซึ่งวิธีนี้ง่ายและเพิ่ม magic code ลงไปนิดเดียว

Problem

หากใครเคยเขียน Windows Service มาก่อนจะเข้าใจว่า เป็น Application ที่ไม่สามารถกด F5 ใน Visual Studio แล้วทำการ debug ได้

2015-04-04_021312

จากตัวอย่าง code ด้านบนจะมี ServiceBase.Run() ที่ทำให้โปรแกรมทำงานเป็น background service เมื่อเราเมื่อกด F5 แล้วจะเกิด Message Error นี้ขึ้นมา

2015-04-04_023523

 

Solution

มีวิธีการแก้ที่ง่ายมากๆ  เราสามารถเพิ่ม code เข้าไปโดยแก้ไข Service Class เพื่อตรวจสอบการ Run Executable ว่าทำงานให้โหมดใด

โดยเข้าไปเปลี่ยน Project Property Output Types: ให้รันจาก Windows Application เป็น Console Application

2015-04-04_081226

 

ต่อมาเพิ่ม code อีกนิดหน่อยตามนี้

 Environment.UserInteractive เป็น property ช่วยให้เราตรวจสอบว่า Application ของเราทำงานอยู่ในโหมด User Session จะได้ค่า true  หากทำงานในโหมด background service จะได้ false

หากเป็น true เราก็เขียนไปเรียก Class Library มาทำงานผ่าน Console

ลองกด F5 ใน Visual Studio ดูก็จะทำการ Debug เป็น Console App ได้เลย 😀

2015-04-04_083415

 

 

 

(Visited 900 times, 1 visits today)

Leave a Reply