IT Staff

Blog về chuyên ngành IT

Xây dựng một window service theo dõi thư mục

leave a comment »

Xây dựng một window service theo dõi thư mục

Mở Visual Studio 2008, vào File > New > Project… > trong Project types, chọn Visual C# > Windows, chọn Windows Service trong Templates và nhập thông tin như hình bên dưới.

Project TestClientService của bạn sẽ gồm 1 file Program.cs và 1 file Service1.cs.

Bạn right-click lên file Service1.cs (bạn có thể đổi tên Service1.cs nếu muốn), chọn View Code, ta sẽ thấy mặc định chương trình sẽ override 2 funtions OnStart và OnStop, và nhiệm vụ của chúng ta là đặt hàm thực thi chức năng của mình.

Ở đây, chúng ta tạo một class LogEventFactory để quản lý việc quan sát và ghi log mỗi khi thông tin có thay đổi.

  1. Xây dựng hàm LogEvent để thực hiện việc ghi log:

Hàm LogEvent nhận 2 tham số đầu vào là message và type. Sử dụng EventLog để ghi log vào hệ thống.

  1. Xây dựng hàm Run, để theo dõi thông tin cần quan sát.

file_path là đường dẫn thư mục cần quan sát.

Tạo đối tượng FileSystemWatcher để theo dõi thao tác thêm/xóa/sửa/đổi tên… và thực thi 2 events OnChanged và OnRenamed như sau:

Sau khi xây dựng xong class LogEventFactory, ta gắn chức năng này trong service như sau.

Right-click Service1 > View Code. Chỉnh sửa lại OnStart và OnStop như sau.

Tiếp theo, vào Properties của project TestClientService > chọn tab Application > chọn giá trị cho Startup object là TestClientService.Program, như hình bên dưới.

* Add installer cho service

Right-click Service1 > View Designer.

Right-click lên vùng design chọn Add Installer.

Chương trình sẽ tạo 1 file tên là ProjectInstaller.cs, trong đó có 2 đối tượng tên là serviceProcessIntaller1 và serviceInstaller1 như hình bên dưới.

Right-click serviceProcessInstaller1 > Properties. Thay đổi giá trị của thuộc tính Account thành LocalSystem

Right-click serviceInstaller1 > Properties. Đặt DisplayName là Test Client Service.

–  Tự động bật service sau khi cài đặt xong.

Right-click ProjectInstaller.cs > chọn View Code.

Tthêm sự kiện AfterInstall để khởi chạy service này lên như sau:

* Tạo một project để cài đặt service TestClientService

Từ Solution “TestClientService”, right-click chọn Add > New Project…

Trong Project types, chọn Other Project Types > Setup and Deployment, chọn Setup Project và điền thông tin cần thiết như hình bên dưới.

Ở đây chúng ta đặt tên cho project setup là TestClientServiceSetup, nhấn OK.

* Gắn vào project output của setup là service TestClient vừa tạo:

Right-click project TestClientServiceSetup > Add > Project Output…

Chọn Project là TestClientService, với tùy chọn là Primary output > OK.

* Tiếp theo, ta gắn actions vào cho setup

Right-click TestClientSetup project > View > Custom Actions

Right-click Custom Actions > Add Custom Action.

Chọn Application Folder > OK.

Chọn Primary output from TestClientService (Active) > OK.

Kết quả ta được như hình bên dưới.

* Test

– Tạo đường dẫn theo dõi như đã khai báo, trong trường hợp bài này là: c:\temp.

– Build  project TestClientService

– Build project TestClientServiceSetup

– Ta sẽ có được file cài đặt TestClientServiceSetup.msi trong thư mục TestClientService\ TestClientServiceSetup\ Debug (Release), như hình bên dưới.

– Khởi chạy file TestClientServiceSetup.msi để cài đặt service.

Nhấn Next để tiếp tục.

Chọn thư mục cài đặt, sau đó nhấn Next để tiếp tục cho đến khi quá trình cài đặt hoàn tất. Nhấn Close để hoàn thành.

Để kiểm tra service được cài đặt và khởi chạy chưa, ta vào: Start > Control Panel > Administrative Tools > Services. Bạn sẽ thấy tên Test Client Service và đang ở trạng thái Started.

Để xem event được ghi log trong hệ thống, bạn vào: Start > Control Panel > Administrative Tools > Events. Bạn sẽ thấy tên Test Client Service được ghi log đúng như ta mong đợi như hình bên dưới.

Tiếp theo, ta tạo 1 file hello.txt trong c:\temp, sau đó vào lại events, ta thấy service của mình đã ghi lại thao tác này: 1 tạo New Text Document.txt và change name to hello.txt.

* Ref link:

– How to create a setup project for a Windows Service application in Visual C#

=>  http://support.microsoft.com/kb/816169

Written by Xavier

Tháng Tám 3, 2013 lúc 9:47 sáng

Posted in Staff

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s

%d bloggers like this: