Question

Je travaille actuellement sur Windows Service pour copier des données de nos caméras de sécurité, car il est écrit dans le répertoire de lecteur Google de l'ordinateur pour le téléchargement instantané. Les fichiers sont accessibles immédiatement après la création par le logiciel de lecture fourni afin que nous souhaitions si possible pour copier immédiatement le flux de données, de cette façon que nous avons une vidéo, même si l'enregistrement est interrompu (les fichiers sont des blocs de 10 minutes).

J'ai actuellement un service créé qui peut regarder le répertoire, mais j'ai une difficulté à déterminer la meilleure façon de regarder ces fichiers. Comme ils sont modifiés de manière continue pendant 10 minutes, je recevrai un grand nombre d'événements modifiés. J'espérais qu'il pourrait y avoir une façon de capturer la création initiale et de commencer à diffuser les données dans un deuxième fichier. Je préoccupe ici que je dois m'assurer que je ne dépassant pas le flux d'enregistrement.

Si ce n'est pas possible ou relativement simple, je devrai simplement détecter lorsque le fichier n'est plus écrit en utilisant une logique avec le dernier temps d'écriture, mais je cherche des suggestions sur le meilleur moyen faire cela pourrait être. Je suis au courant des solutions proposées ici , mais je ne suis pas sûr s'ils appliquent à la situation que je traite. Il existe un grand nombre de fichiers dans les sous-répertoires afin d'essayer de garder une trace de quels fichiers que je n'ai plus de déclenchement des événements pourrait être très désordonné. Est-ce que quelqu'un a des suggestions pour faire de l'une de ces méthodes?

Était-ce utile?

La solution

Vous pouvez essayer de le faire, mais pour être honnête, cela semble être un piratage et je suis sceptique que Windows a une méthode prise en charge pour faire ce que vous essayez de faire.Essentiellement, vous essayez d'écouter sur un flux d'écriture.

Cela ressemble à la solution que vous travaillez en ce moment est une boîte noire qui accède donc directement au flux, probablement probablement probablement une option.Cependant, il y a une autre approche.Je regarderais comment créer un lecteur virtuel avec votre application sous Windows.De cette façon, vous pouvez avoir l'application d'enregistrement écrit sur votre chemin d'accès virtuel qui vous permettra de gérer les flux, mais vous le souhaitez.Ce qui peut inclure les écrire à deux endroits distincts en même temps.Google Drive et certains stockages locaux d'une sorte par exemple.

Voici une question de Stackoverflow sur la création de lecteurs virtuels qui devraient vous aider à démarrer: C #: Créez un lecteur virtuel dans un ordinateur

Autres conseils

hmmm ... Vous pouvez essayer d'utiliser une minuterie ... de cette façon, vous pouvez limiter quand il tire

private Boolean TimeToCheck=false;
public static void Run()
{   Timer timer=new Timer(2000); //2 seconds
    FileSystemWatcher fileWatch=new FileSystemWatcher();
    fileWatch.Path="DirToWatch";
    fileWatch.Filter="fileToWatch";
    fileWatch.Changed += new FileSystemEventHandler(OnChanged);
    fileWatch.Created += new FileSystemEventHandler(OnChanged);
    fileWatch.Deleted += new FileSystemEventHandler(OnChanged);
    //If you want rename, you could use the rename event as well  fileWatch.Renamed += new RenamedEventHandler(OnRenamed);
    timer.Elapsed += new ElapsedEventHandler(timer_done);
    watcher.EnableRaisingEvents = true;
    timer.Enabled = true; // Enable it
}

private static void OnChanged(object source, FileSystemEventArgs e)
{
    if(TimeToCheck)
    {
        TimeToCheck=false;
        timer.Enabled = false; // Enable it
        //move the files
        timer.Enabled = true; // Enable it
    }

}
private static void OnRenamed(object source, RenamedEventArgs e)
{
    if(TimeToCheck)
    {
        TimeToCheck=false;
        timer.Enabled = false; // Enable it
        //move the files
        timer.Enabled = true; // Enable it
    }
}
private static void timer_done(object sender, ElapsedEventArgs e)
{
    TimeToCheck=true;
}

Avez-vous regardé le objetSystemwatcher objet?Si vous comprenez la question correctement, vous pouvez être quelque chose que vous voudrez peut-être utiliser ... Si vous souhaitez mettre ce fichier de sécurité dans un autre répertoire, vous pouvez ensuite utiliser File.copy pour déplacer la connexion de sécurité mise à jour dans leDossier de lecteur Google ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top