private static void DoDirectoryActionRecurs(DirectoryInfo di,
                                                    PutInDirectoryEventHandler evtDir, PutInDirectoryEventHandler evtFile)
        {
            foreach (DirectoryInfo dir in di.GetDirectories())
            {
                try
                {
                    if (evtDir != null)
                    {
                        evtDir(null, new PutInDirectoryEventArgs(dir));
                    }
                    DoDirectoryActionRecurs(di, evtDir, evtFile);
                }
                catch (Exception)
                {
                }
            }

            if (evtFile != null)
            {
                evtFile(null, new PutInDirectoryEventArgs(di));
            }
        }
        private static void DoDirectoryActionRecurs(DirectoryInfo di, 
            PutInDirectoryEventHandler evtDir, PutInDirectoryEventHandler evtFile)
        {
            foreach (DirectoryInfo dir in di.GetDirectories())
            {
                try
                {
                    if (evtDir != null)
                        evtDir(null, new PutInDirectoryEventArgs(dir));
                    DoDirectoryActionRecurs(di, evtDir, evtFile);
                }
                catch (Exception)
                {
                }
            }

            if (evtFile != null)
                evtFile(null, new PutInDirectoryEventArgs(di));
        }