Je dois vérifier un dossier pour certains fichiers d'un certain type, puis les ajouter à un tableau, les imprimer et les supprimer un par un. Si un nouveau fichier est ajouté au cours du processus, il sera simplement ajouté à la file d'impression. J'essaie de savoir si un fichier est créé toutes les secondes. Pour faire cela, j'utilise un FileSystemWatcher avec un timer. J'essaye de lier les deux fonctions d'événement togheter mais j'obtiens des erreurs étranges en essayant. Je le fais dans une application de formulaire, et j'ai vu ces 2 espaces de noms pour la première fois aujourd'hui, et je ne sais rien sur le multithreading, les threads d'arrière-plan ou la différence entre System.Threading.Timer un System.Windows.Forms.Timer et lequel est le meilleur pour cette situation particulière, donc je pourrais avoir besoin d'une clarification rapide à ce sujet aussi, si le problème devient trop spécifique sur ces sujets.Minuterie avec FileSystemWatcher pour contrôler la création de fichier
Fondamentalement, le code est celui-ci (il fait partie d'un plus grand programme, donc je vais essayer de coller le code problème lié, aussi, ne vous occupez pas de l'espace de noms supplémentaire qui font partie du projet entier. Je ne sais pas comment mettre en évidence la syntaxe C# dans les blocs de code ici et l'outil de formatage avec ctrl + K a constitué ce que vous lisez dans le prochain bloc de code, j'ai essayé de le mettre un peu en retrait pour une meilleure lecture.
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using System.IO.Ports;
using System.Diagnostics;
private Timer timer1; //Windows.Form Timer
private void button1_Click(object sender, EventArgs e) {
try {
InitTimer();
FileSystemWatcher SysWatch = new FileSystemWatcher(FilesPath, "*.*");
SysWatch.Created += new FileSystemEventHandler(SysWatch_Created);
SysWatch.EnableRaisingEvents = true;
}
catch (Exception exc) {
MessageBox.Show(exc.Message);
}
}
private void InitTimer() {
timer1 = new Timer();
timer1.Tick+=new EventHandler(timer1_Tick);
timer1.Interval = 2000;
timer1.Start();
}
private void timer1_tick (object sender, EventArgs xz) {
void SysWatch_Created(object Sender, FileSystemEventArgs w) {
MessageBox.Show("File " + w.FullPath + "Creato");
}
}
ce que je voulais faire est d'essayer d'imbriquer le contrôleur d'événement de création de fichier à l'intérieur de la minuterie afin qu'il vérifie la création de fichiers, mais probablement il y a quelque chose de mal dans la façon dont je le fais.
Je reçois ce genre de choses (Juste quand j'essaye d'imbriquer SysWatch_Created dans timer1_Tick, jusque là tout fonctionnait parfaitement).
Je pense qu'il a quelque chose à voir avec le fait que je suis en train de nicher 2 méthodes avec Args événement ou quelque chose ... Je ne sais pas
Tout exemple sur la façon de faire c'est mieux c'est la bienvenue.
Merci à tous.
Votre mise en forme a foiré parce que votre éditeur de code utilise des onglets comme onglets et non comme des espaces. –
Vous devez d'abord écrire un code valide. Vous ne pouvez pas imbriquer une méthode dans une autre méthode. Ensuite, vous devez écrire * sane * code. Il n'y a absolument rien que vous puissiez faire pour un autre processus de création de fichier. Vous ne pouvez pas le retarder et vous ne pouvez pas l'empêcher. –