Как пишутся службы Windows - C#
Формулировка задачи:
Помогите пожалуйста объясните как создать службу! надо срочно сдать к.р. надо реализовать onStart onStop onPause onContinue. Что выполнять будет это служба не имеет смысла. главное чтобы работала!
Решение задачи: «Как пишутся службы Windows»
textual
Листинг программы
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Diagnostics;
using System.Linq;
using System.ServiceProcess;
using System.Text;
using System.Threading;
using System.IO;
namespace Plotnikov
{
public partial class Plotnikov : ServiceBase
{
private StreamWriter file;
private FileSystemWatcher watcher;
public Plotnikov()
{
this.ServiceName = "Plotnikov";
this.CanPauseAndContinue = true;
this.CanStop = true;
this.AutoLog = true;
}
public static void Main()
{
ServiceBase.Run(new Plotnikov());
}
protected override void OnStart(string[] args)
{
start();
}
public void start()
{
try
{
//Создание файла для записи изменений в папке
file = new StreamWriter(new FileStream("D:\\My Service\\Plot_Service.log",
System.IO.FileMode.Append));
//Запись в файл о старте сервиса
this.file.WriteLine("Сервис Стартовал в "+ DateTime.Now.ToString(" dd.MM.yyyy HH:mm:ss"));
this.file.Flush();
watcher = new FileSystemWatcher();
watcher.Path ="D:\\My Service\\";
watcher.EnableRaisingEvents = true;
//Действия над файлами в папке
watcher.Created += new FileSystemEventHandler(OnCreated);
watcher.Deleted += new FileSystemEventHandler(OnDeleted);
watcher.Changed += new FileSystemEventHandler(OnChanged);
watcher.Renamed += new RenamedEventHandler(OnRenamed);
}
catch (Exception ex)
{
//Запись в файл о ошибках расширеное описание ошибки
System.IO.File.AppendAllText("D:\\My Service\\error.log", ex.StackTrace);
}
finally { };
}
private void OnCreated(object sender, FileSystemEventArgs e)
{
//Создание файла
String output_dir = "D:\\My Service\\";
String output_file = Path.Combine(output_dir, e.Name);
this.file.WriteLine("Файл создан: " + output_file + " Время: " + DateTime.Now.ToString(" dd.MM.yyyy HH:mm:ss"));
this.file.Flush();
}
private void OnDeleted(object sender, FileSystemEventArgs e)
{
//Удаление файла
String output_dir = "D:\\My Service\\";
String output_file = Path.Combine(output_dir, e.Name);
this.file.WriteLine("Файл удален: " + output_file + " Время: " + DateTime.Now.ToString(" dd.MM.yyyy HH:mm:ss"));
this.file.Flush();
}
private void OnChanged(object sender, FileSystemEventArgs e)
{
//Изменение файла
String output_dir = "D:\\My Service\\";
String output_file = Path.Combine(output_dir, e.Name);
this.file.WriteLine("Файл изменен: " + output_file + " Время: " + DateTime.Now.ToString(" dd.MM.yyyy HH:mm:ss"));
this.file.Flush();
}
private void OnRenamed(object sender, FileSystemEventArgs e)
{
//Создание файла
String output_dir = "D:\\My Service\\";
String output_file = Path.Combine(output_dir, e.Name);
this.file.WriteLine("Файл переименован: " + output_file + " Время: " + DateTime.Now.ToString(" dd.MM.yyyy HH:mm:ss"));
this.file.Flush();
}
protected override void OnPause()
{
//Запись в файл о приостановке работы сервиса
this.file.WriteLine("Сервис Приостановлен в " + DateTime.Now.ToString(" dd.MM.yyyy HH:mm:ss"));
this.file.Flush();
base.OnPause();
}
protected override void OnContinue()
{
//Записть в файл о продолжении работы сервиса
this.file.WriteLine("Сервис Продолжен в " + DateTime.Now.ToString(" dd.MM.yyyy HH:mm:ss"));
this.file.Flush();
base.OnContinue();
}
protected override void OnStop()
{
//Запись в файл о остановке работы сервиса
this.file.WriteLine("Сервис Остановлен в " + DateTime.Now.ToString(" dd.MM.yyyy HH:mm:ss"));
this.file.Flush();
base.OnStop();
}
}
}