Evenements changement de LastWriteTime

cs_corine Messages postés 7 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 19 mai 2004 - 11 mai 2004 à 10:56
cs_corine Messages postés 7 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 19 mai 2004 - 11 mai 2004 à 14:14
Salut,

je voudrais déclencher une acquisition sur changement de LastWriteTime d'un fichier...

Par exemple:

public void mon_acquisition(object sender, System.EventArgs e)
{
//j'attend qu'un fichier du repertoire soit écrit
while(DirInfo.GetFiles()[1].LastWriteTime != DirInfo.LastWriteTime);

//et ensuite j'execute
....
....
....

}

Mon problème est que je voudrais utiliser un evenement pour ne pas surcharger le serveur en requetes...

ya til un truc du genre DirInfo.GetFiles()[1].LastWriteTime.IsChanged?

Merci de votre aide

2 réponses

cs_coq Messages postés 6349 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 101
11 mai 2004 à 12:22
avec System.IO.FileSystemWatcher

exemple de code :
private FileSystemWatcher FSWatcher;

public Form1()
{
InitializeComponent();

FSWatcher = new FileSystemWatcher();
FSWatcher.Changed += new FileSystemEventHandler(FSWatcher_Changed_Created_Deleted);
FSWatcher.Created += new FileSystemEventHandler(FSWatcher_Changed_Created_Deleted);
FSWatcher.Deleted += new FileSystemEventHandler(FSWatcher_Changed_Created_Deleted);
FSWatcher.Renamed += new RenamedEventHandler(FSWatcher_Renamed);
}


private void Form1_Load(object sender, System.EventArgs e)
{
FolderBrowserDialog dlg = new FolderBrowserDialog();
if ( dlg.ShowDialog() == DialogResult.OK)
{
FSWatcher.Path = dlg.SelectedPath;

// lancement de la surveillance
FSWatcher.EnableRaisingEvents = true;
}
else
Application.Exit();
}

private void FSWatcher_Changed_Created_Deleted(object sender, FileSystemEventArgs e)
{
StringBuilder tmp = new StringBuilder();
tmp.AppendFormat("{0} @ {1} : Action={2},    Nom={3} ({4})", 
DateTime.Now.ToShortDateString(), 
DateTime.Now.ToShortTimeString(),
e.ChangeType.ToString(),
e.Name,
e.FullPath);

listBox_Changements.Items.Add(tmp.ToString());
}

private void FSWatcher_Renamed(object sender, RenamedEventArgs e)
{
StringBuilder tmp = new StringBuilder();
tmp.AppendFormat("{0} @ {1} : Action=Renamed,    Ancien nom={2} ({3}),    Nouveau nom={4} ({5})",
DateTime.Now.ToShortDateString(), 
DateTime.Now.ToShortTimeString(),
e.OldName,
e.OldFullPath,
e.Name,
e.FullPath);

listBox_Changements.Items.Add(tmp.ToString());
}



Cocoricoooooooo !!!!
0
cs_corine Messages postés 7 Date d'inscription dimanche 8 février 2004 Statut Membre Dernière intervention 19 mai 2004
11 mai 2004 à 14:14
merci bien!
0
Rejoignez-nous