unity debugger crashes when using FileSystemWatcher

The unity debugger always crashes when we use the following script in our project.
To reproduce, just use this script, attach monodevelop to unity and press “play” in unity editor.

Any ideas how to get this running?
Thanks for any help.

[InitializeOnLoad]
public class XaitControlEditorWatch : EditorWindow
{
	
	private static FileSystemWatcher mSceneFileWatcher;
	
	static XaitControlEditorWatch()
	{	
		EditorApplication.update += RunOnce;	
	}
	
	static void RunOnce()
	{	
		OnEnableFileWatch();
	}
	
	static void OnEnableFileWatch()
	{
		if (mSceneFileWatcher != null)
		{
			mSceneFileWatcher.Changed -= OnSceneFileWatcher_Changed;
			mSceneFileWatcher.Created -= OnSceneFileWatcher_Changed;
			mSceneFileWatcher.Deleted -= OnSceneFileWatcher_Changed;
			mSceneFileWatcher.Renamed -= OnSceneFileWatcher_Changed;
		}
		

		string currentPath = Path.GetFullPath("Assets");
		mSceneFileWatcher = new FileSystemWatcher(currentPath);
		mSceneFileWatcher.NotifyFilter = NotifyFilters.LastWrite;

        mSceneFileWatcher.Changed += OnSceneFileWatcher_Changed;
		mSceneFileWatcher.Created += OnSceneFileWatcher_Changed;
		mSceneFileWatcher.Deleted += OnSceneFileWatcher_Changed;
		mSceneFileWatcher.Renamed += OnSceneFileWatcher_Changed;
		
		mSceneFileWatcher.Filter = "test.txt";
		mSceneFileWatcher.EnableRaisingEvents = true; 	
	}


	
	static void OnSceneFileWatcher_Changed(object sender, FileSystemEventArgs e)
	{}
}

I modified this off of your example, but it works in MonoDevelop:

using UnityEngine;
using UnityEditor;
using System.Collections;
using System.IO;

[InitializeOnLoad]
public class AssetWatcher : EditorWindow
{
    private static FileSystemWatcher assetFileWatcher;

    [MenuItem("Window/Asset Watcher")]
    static void Init()
    {
        AssetWatcher window = (AssetWatcher)EditorWindow.GetWindow(typeof(AssetWatcher));
        window.OnGUI();
    }

    void OnGUI()
    {
        OnEnableFileWatch();
    }

    static void OnEnableFileWatch()
    {
        if (assetFileWatcher == null)
        {
            string currentPath = Path.GetFullPath("Assets");
            assetFileWatcher = new FileSystemWatcher(currentPath);

            assetFileWatcher.Changed += OnAssetFileWatcherChanged;
            assetFileWatcher.Created += OnAssetFileWatcherChanged;
            assetFileWatcher.Deleted += OnAssetFileWatcherChanged;
            assetFileWatcher.Renamed += OnAssetFileWatcherChanged;
            
            assetFileWatcher.Filter = "*.*";
            assetFileWatcher.IncludeSubdirectories = true;
            assetFileWatcher.EnableRaisingEvents = true;
        }
    }

    static void OnAssetFileWatcherChanged(object sender, FileSystemEventArgs e)
    {
        // Do stuff here
    }
}