Dùng C# viết windows service

Các bài hướng dẫn bằng tiếng Anh có vẻ có nhiều, nhưng phần lớn các bạn post những bài tiếng Anh ấy lên các diễn đàn đều không giải thích cũng như dịch lại, mà thuần là copy paste, cho nên LockeVN mỗ cảm thấy nếu viết một bài hướng dẫn nhanh bằng tiếng Việt thì vẫn hữu ích.

Viết bằng VS2008 và C# rất tiện, rất nhanh, dễ hiểu, gọn, chỉ cần làm theo vài bước đơn giản là được.

OK, rào trước đón sau đủ rồi, giờ bắt đầu, ngắn gọn.

1. Mở Visual Studio ra (dùng bản VS2008 cho tiện),
Tạo một Project mới, chọn C#, chọn windows, chọn Windows Service, đặt tên project “MyService”, OK.
2. Chỉnh vài setting nho nhỏ
Chuột phải vào project, chọn Startup Object là MyService.Program nhé
Nhìn vào Solution Explorer, chuột phải vào Service1.cs, chọn Rename, cho nó một cái tên mỹ miều hơn nhé “FirstService”, nhấn Yes để nó tự thay đổi các file khác.
Nhìn vào Solution Explorer, Nhấn vào FirstService.cs, Nhấn Shift F7, mở ra màn hình Design, chuột phải vào màn hình Design (ở giữa ấy) chọn Properties, chỉnh các thông số của nó trong khung Properties nhé, quan trọng nhất là cái ServiceName, đặt tạm là “mysvc”

3. Nhớ là dùng System.Threading.Timer, đừng dùng các Timer khác (kẻo bạn sẽ hối hận và tốn thời gian vô cùng)

4. Thêm bộ Installer
Sửa các thuộc tính sau

5. Cài đặt
mở Visual Studio 2008 Command Prompt
Để cài đặt, Gõ installutil /i “MyService.exe”
Để gỡ bỏ, Gõ installutil /u “MyService.exe”

Đôi khi việc gỡ bỏ service không hề dễ dàng (nhất là khi code lỗi, code lỗi phần installer, chỉnh sửa project setup), không thể uninstall đc, mà không uninstall được thì bạn sẽ không cài lại được, không thử tiếp được😀 . Cho nên ta vẫn phải cần tới cách gỡ bỏ windows service bằng tay.

  • Vào menu Start, Run, gõ regedit, enter
  • Chuyển đến nhánh key (bên trái) HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services
  • Xoá nhánh service nào bạn thấy bị lỗi.
  • Khởi động lại.

Chú ý: đừng làm việc gỡ bỏ bằng tay này nếu không hiểu rõ ràng bạn đang sửa cái gì, hoàn toàn tự chịu trách nhiệm đấy nhé.

Tham khảo

http://www.grinn.net/blog/dev/2008/01/windows-services-in-c-part-1.html
http://www.codeproject.com/KB/system/WindowsService.aspx
http://www.aspfree.com/c/a/C-Sharp/Timer-Objects-in-Windows-Services-with-C-sharp-dot-NET/

3 thoughts on “Dùng C# viết windows service

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s