Merci pour toute aide sur ce ..FileSystemWatcher sur Threads
Je tente d'écrire une petite application qui surveille Filewatcher un répertoire local et des copies des changements vers un autre répertoire local. J'ai utilisé la classe FileSystemWatcher dans .Net et sur mon clic btnStart, j'exécute quatre threads, chacun avec sa propre instance FileSysWatcher, surveillant les différents types de changements. Donc le premier que je veux chercher est l'événement créé.
new Thread(Created).Start();
alors je dois:
void Created()
{
FileSystemWatcher Watcher2 = new FileSystemWatcher();
Watcher2.Path = txtBxDirToWatch.Text;
Watcher2.NotifyFilter = NotifyFilters.FileName | NotifyFilters.LastAccess | NotifyFilters.LastWrite | NotifyFilters.DirectoryName;
//watch all files in the path
Watcher2.Filter = "*.*";
//dont watch sub dir as default
Watcher2.IncludeSubdirectories = false;
if (chkBxIncSub.Checked)
{
Watcher2.IncludeSubdirectories = true;
}
Watcher2.Created += new FileSystemEventHandler(OnCreated);
Watcher2.EnableRaisingEvents = true;
}
tout ce que je veux que ce faire est de copier des modifications à un chemin d'accès local codé en dur mais je ne peux pas obtenir aucun résultat. voici où j'ai géré l'événement
public static void OnCreated(object source, FileSystemEventArgs e)
{
//combine new path into a string
string created = Path.Combine(@"C:\WatcherChanges", e.Name);
File.Create(created);
}
Avez-vous essayé de le déboguer? Est-ce que votre OnCreated est frappé, alors vous créez un fichier? Êtes-vous sûr que e.Name est un nom de fichier, pas un chemin de fichier complet? – Nikolay
Vérifiez si ce nouveau thread est jamais créé, Depuis que vous accédez aux contrôles de l'interface utilisateur à partir du nouveau thread. Je crois que c'est une exception et que vous ne le voyez pas. – Marcin