Article : Windows Services Part - 1
Reply
![]() |
|
|
From:
Nasha
|
Hey Group,
Today we will start with windows services series.
Windows services are applications that start as soon as the OS starts although they can be configured to start manually.
To view all the windows services available on your machine you can go to Start -> Settings-> Control Panel -> Admistrative Tools -> Services. A windows service can run under a specific user or under the system user.
Generally all those applications that do not require any human intervention are preferred as windows service, say a background job.
Today the service that we will create will move the files from one location to another location.
Open a windows service application let the Service1.cs remain as it is now. We will come back to it a little later. Add a new class and name it MoveFile.cs
So let us start by creating a simple class called MoveFile. Add the following references to MoveFile
using System; using System.Threading; using System.IO;
In this class we will create we will declare a private thread. This thread will initiate the file movement from one folder to another.
public class MoveFile { Thread currThread; public MoveFile() { currThread = new Thread(new ThreadStart(StartMoving)); currThread.Start(); } }
In the constructor of the class we create a new thread by setting its thread start and start the thread. As soon as our thread will be started StartMoving will be called. So Let us check out its implementation
public void StartMoving() { while(1==1) { string[] files = Directory.GetFiles(@"E:\FilesToMove"); for(int i=0;i<files.GetUpperBound(0);i++) { File.Move(files[i],@"E:\MovedFiles" +files[i].Substring(files[i].LastIndexOf("\\"))); Console.WriteLine(files[i]); } } }
Note : For the sake of simplicity and demo purpose the paths have been hardcoded. You can add an application config file and read the paths from there.
Here I am having two folders FilesToMove and MovedFiles in my E: I am having a while loop which continuously checks for files in my
FilestoMove folder and if there are any files in it I am moving them to MovedFiles.
Since a windows service can be stopped, paused, resumed and abort we want our service to also exhibit the same behavior. So let us add functions to MoveFile for the same.
public void PauseMoving() { currThread.Suspend(); }
public void StopMoving() { currThread.Abort(); }
public void ResumeMoving() { currThread.Resume(); } Thus we have created our MoveFile Class that moves files from FileToMove to MovedFiles Folder.
This class is a generic class, you can also use it with a normal windows or console application. But we will create a windows service using it.
All the classes, which are required for creating a windows service, are present in System.ServiceProcess Namespace.
Any service that we create has to inherit from ServiceBase class. This class is used to register the service and handle its events.
Coming back to Service1.cs rename it to MoveFilesService. Please see to it that you change the name in solution explorer as well as the class constructor.
In InitailizeCompoment function there is a statement which talks about the service name ( as shown below) please make the changes there also.
this.ServiceName = "MoveFilesService";
In the Main function of your service class checkout Services added to your ServicesToRun Array change it to MoveFilesService
ServicesToRun = new System.ServiceProcess.ServiceBase[] { new MoveFilesService() };
Check out the name in properties of your MoveFilesService class. Compile your project , it should not give you any errors.
Go to the properties of MoveFile and set
AutoLog = true CanPauseAndContinue = true CanStop = true
Add a private variable of MoveFile to MoveFileService class.
public class MoveFilesService : System.ServiceProcess.ServiceBase { MoveFile oMoveFile;
We will now add code to OnStart method of our Service Class where we will instantiate an object of MoveFile.
protected override void OnStart(string[] args) { oMoveFile = new MoveFile(); }
ServiceBase class has got methods to Pause, Stop and Resume a service. We will have to override them and provide an implementation to pause, stop and resume our service as follows.
protected override void OnPause() { oMoveFile.PauseCopying(); } protected override void OnStop() { oMoveFile.StopCopying(); }
protected override void OnContinue() { oMoveFile.ResumeCopying(); }
The methods that we had made in our MoveFile class are called here. Hence whenever our windows service is paused our thread will also exhibit the same behavior.
Compile the project and see that you don't get any errors will see how to install our windows service tomorrow.
-- Please post your queries and comments for my articles in the usergroup for the benefit of all. I hope this step from my end is helpful to all of us. Regards, Namratha (Nasha) |
|
View other groups in this category.
![]() |
To stop getting this e-mail, or change how often it arrives, go to your E-mail Settings.
Need help? If you've forgotten your password, please go to Passport Member Services.
For other questions or feedback, go to our Contact Us page.
If you do not want to receive future e-mail from this MSN group, or if you received this message by mistake, please click the "Remove" link below. On the pre-addressed e-mail message that opens, simply click "Send". Your e-mail address will be deleted from this group's mailing list.
Remove my e-mail address from dotNET User Group Hyd.
|
|
- Article : Windows Services Part - 1 Nasha
-