Tengo que crear un programa que supervise los cambios en el tamaño del archivo. Ya hice un servicio de Windows simple y un gestor de sistema de archivos, así que ahora estoy familiarizado con el concepto. También hice un código que verifica el tamaño del archivo (lo hice en un botón de formulario) pero aún no lo implementé en mi filesystemwatcher. ¿Cómo creo un servicio de Windows que tenga un guardián de archivos que monitoree el tamaño del archivo? ¿Tengo que poner un sistema de archivos guardián dentro del servicio de Windows y llamar al observador a través del método OnStart?Servicio de Windows w/FileSystemWatcher en C#
Respuesta
Si está haciendo un servicio de Windows, querrá hacerlo mediante programación. Normalmente mantengo los formularios fuera de mis servicios y hago una interfaz separada para que se comuniquen. Ahora el FileSystemWatcher no tiene un evento para mirar únicamente por el tamaño, por lo que querrá hacer un método que vincule a FileSystemWatcher.Changed para verificar las modificaciones a los archivos existentes. Declare e inicialice el control en su método OnStart y ate los eventos también. Haga cualquier código de limpieza en su método OnStop. Debe ser algo como esto:
protected override void OnStart(string[] args)
{
FileSystemWatcher Watcher = new FileSystemWatcher("PATH HERE");
Watcher.EnableRaisingEvents = true;
Watcher.Changed += new FileSystemEventHandler(Watcher_Changed);
}
// This event is raised when a file is changed
private void Watcher_Changed(object sender, FileSystemEventArgs e)
{
// your code here
}
También tenga en cuenta, la FileSystemWatcher se disparará a partir de diversos eventos para un solo archivo, por lo que cuando se depure reloj de patrones para trabajar alrededor de ella.
Usted puede simplemente permitir que su objeto FileSystemWatcher en el método OnStart estableciendo
EnableRaisingEvents = true;
Luego controlar el evento. Deberias hacer eso.
El valor predeterminado sería verdadero – Peru
Tal vez. [MSDN] (http://msdn.microsoft.com/en-us/library/system.io.filesystemwatcher.enableraisingevents.aspx) - "verdadero si el componente está habilitado; de lo contrario, falso. El valor predeterminado es falso. están usando el componente en un diseñador en Visual Studio 2005, el valor predeterminado es verdadero ". –
puede crear un delegado para manejar lo que ha cambiado como
myWatcher.Changed += new FileSystemHandler(FSWatcherTest_Changed);
private void FSWatcherTest_Changed(object sender,
System.IO.FileSystemEventArgs e)
{
//code here for newly changed file or directory
}
Y así sucesivamente
Yo recomendaría que lea este artículo http://www.codeproject.com/Articles/18521/How-to-implement-a-simple-filewatcher-Windows-serv
también tienen este delegado on_start
en servicio de las ventanas
- 1. C# Servicio de finalización de servicio de Windows
- 2. C# Servicio de Windows Tiempo de espera en el inicio
- 3. Servicio de instalación de Windows en .NET C#
- 4. ¿Cómo instalar un servicio de Windows mediante programación en C#?
- 5. Establecer la descripción del servicio de Windows en C++
- 6. Usar un servicio web en la aplicación C# Windows
- 7. C#: servicio de Windows simple da como excepción de seguridad
- 8. Alojamiento del servicio WCF en el servicio de Windows
- 9. Cómo configurar log4net para un servicio de Windows C#
- 10. C# servicio de Windows o simplemente programa normal?
- 11. ¿Convierte un programa C++ a un servicio de Windows?
- 12. Quiero que mi servicio de Windows C# se actualice automáticamente
- 13. Servicio de Windows terminado inesperadamente
- 14. filesystemwatcher como servicio de Windows?
- 15. Despliegue del servicio de Windows
- 16. WCF Servicio de Windows TimeOut
- 17. Crear un servicio de Windows en delphi
- 18. WCF Seguridad en un servicio de Windows
- 19. Servicio de Windows multiproceso en MingW
- 20. Crear un servicio de Windows en vb6
- 21. Cómo crear un servicio de escucha C# para MSMQ como un servicio de Windows
- 22. ¿Algún ejemplo de cómo crear un servicio de Windows en C/C++? (No GUI)
- 23. El servicio de Windows necesita esperar, Thread.Sleep?
- 24. Servicio de Windows: obtenga el directorio actual
- 25. ¿Cómo instalo un servicio C# Windows sin crear un instalador?
- 26. Reiniciar mediante programación un servicio de Windows
- 27. ¿Cuándo usamos el servicio de Windows?
- 28. Credenciales al instalar el servicio de Windows
- 29. El servicio de Windows no funciona
- 30. Instalar el servicio de Windows creado en Visual Studio
Así que no debería agregar ningún elemento de la caja de herramientas en la ventana de servicio ... ¡Gracias! Lo intentaré lo antes posible. Eso fue realmente útil. –
Me mantendría alejado de él. Cuando está ejecutando un servicio, Windows naturalmente deshabilita la integración de formularios y tiene que configurar el servicio después de la instalación para permitirlo. Si es algo que solo tus ojos ven, entonces probablemente no sea gran cosa, pero es un buen hábito evitar ese estilo de desarrollo (también por razones de seguridad). –
ACTUALIZACIÓN: en Windows Vista y Win 7, la opción para permitir la interacción con el escritorio se eliminó por completo. No me di cuenta de esto en el momento de publicar. –