//
using System.ComponentModel;
+using System.Diagnostics;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
using System.Security.Permissions;
int mode = 0;
if (managed == null)
mode = InternalSupportsFSW ();
-
+
bool ok = false;
switch (mode) {
case 1: // windows
break;
}
- if (mode == 0 || !ok)
- DefaultWatcher.GetInstance (out watcher);
+ if (mode == 0 || !ok) {
+ if (String.Compare (managed, "disabled", true) == 0)
+ NullFileWatcher.GetInstance (out watcher);
+ else
+ DefaultWatcher.GetInstance (out watcher);
+ }
+
+ ShowWatcherInfo ();
}
}
+ [Conditional ("DEBUG"), Conditional ("TRACE")]
+ void ShowWatcherInfo ()
+ {
+ Console.WriteLine ("Watcher implementation: {0}", watcher != null ? watcher.GetType ().ToString () : "<none>");
+ }
+
#endregion // Constructors
#region Properties
#region Methods
- [MonoTODO]
public void BeginInit ()
{
- throw new NotImplementedException ();
+ // Not necessary in Mono
}
protected override void Dispose (bool disposing)
Stop ();
}
- [MonoTODO]
public void EndInit ()
{
- throw new NotImplementedException ();
+ // Not necessary in Mono
}
enum EventType {
return;
if (synchronizingObject == null) {
- Delegate [] delegates = ev.GetInvocationList ();
- if (evtype == EventType.RenameEvent) {
- foreach (RenamedEventHandler d in delegates){
- d.BeginInvoke (this, (RenamedEventArgs) arg, null, null);
- }
- } else if (evtype == EventType.ErrorEvent) {
- foreach (ErrorEventHandler d in delegates){
- d.BeginInvoke (this, (ErrorEventArgs) arg, null, null);
- }
- } else {
- foreach (FileSystemEventHandler d in delegates){
- d.BeginInvoke (this, (FileSystemEventArgs) arg, null, null);
- }
+ switch (evtype) {
+ case EventType.RenameEvent:
+ ((RenamedEventHandler)ev).BeginInvoke (this, (RenamedEventArgs) arg, null, null);
+ break;
+ case EventType.ErrorEvent:
+ ((ErrorEventHandler)ev).BeginInvoke (this, (ErrorEventArgs) arg, null, null);
+ break;
+ case EventType.FileSystemEvent:
+ ((FileSystemEventHandler)ev).BeginInvoke (this, (FileSystemEventArgs) arg, null, null);
+ break;
}
return;
}