Возможно ли реализовать методы делегирования для FileSystemWatcher?Как реализовать делегатов в FileSystemWatcher?
У меня есть метод делегата с именем myDelegate, который я хочу вызвать внутри функции таймера OnElapsedTimer, я попытался вызвать myDelegate для вызова OnDeleted, но второй аргумент дает ошибку компиляции. Как передать FileSystemEventArgs в методе делегата?
using System;
using System.IO;
using System.Security.Permissions;
using System.Timers;
public class Watcher
{
public delegate void myDelegae(object source, FileSystemEventArgs e);
public static void Main()
{
System.Timers.Timer aTimer = new System.Timers.Timer();
aTimer.Elapsed += new ElapsedEventHandler(OnElapsedTimer);
aTimer.Interval = 5000;
aTimer.Enabled = true;
Run();
while (Console.Read() != 'q') ;
}
[PermissionSet(SecurityAction.Demand, Name = "FullTrust")]
public static void Run()
{
string path = @"C:\\File";
FileSystemWatcher watcher = new FileSystemWatcher(path);
watcher.NotifyFilter = NotifyFilters.LastAccess | NotifyFilters.LastWrite
| NotifyFilters.FileName | NotifyFilters.DirectoryName | NotifyFilters.Attributes;
watcher.NotifyFilter = NotifyFilters.DirectoryName;
// Add event handlers.
watcher.Deleted += new FileSystemEventHandler(OnDeleted);
// Begin watching.
watcher.EnableRaisingEvents = true;
}
private static void OnDeleted(object source, FileSystemEventArgs e)
{
Console.WriteLine("File: {0}", e.FullPath);
}
private static void OnElapsedTimer(object source, ElapsedEventArgs e)
{
Console.WriteLine("Hello World!");
if (!Directory.Exists("C:\\File"))
{
//Invoke OnDeleted here
var fseArgs = new FileSystemEventArgs(WatcherChangeTypes.Deleted, @"C:\", @"File");
OnDeleted("C:\\File",fseArgs);
}
}
}
, пожалуйста, отправьте текст ошибки компиляции ... это поможет. спасибо – Timmerz
Модифицированный код кажется работающим сейчас – kanden