Domanda

Attualmente sto lavorando al servizio Windows per copiare i dati dalle nostre telecamere di sicurezza in quanto viene scritta nella directory di Google Drive sul computer per il caricamento istantaneo. I file sono accessibili immediatamente dopo la creazione tramite il software di riproduzione fornito in modo che desideriamo che fosse possibile copiare immediatamente il flusso di dati, in questo modo abbiamo alcuni video anche se la registrazione è interrotta (i file sono blocchi di 10 minuti).

Attualmente ho un servizio creato che può guardare la directory, tuttavia ho qualche difficoltà a determinare il modo migliore per guardare questi file. Dal momento che vengono modificati continuamente per 10 minuti, riceverò un gran numero di eventi modificati. Speravo che ci fosse un modo in cui posso catturare la creazione iniziale e avviare lo streaming dei dati in un secondo file. La mia preoccupazione qui è che ho bisogno di assicurarmi di non superare il flusso di registrazione.

Se questo non è possibile o relativamente semplice, dovrò solo rilevare quando il file non viene più scritto utilizzando una logica con l'ultimo tempo di scrittura, ma sto cercando suggerimenti su quale sia il modo migliore Per fare ciò potrebbe essere. Sono a conoscenza delle soluzioni proposte qui , ma non sono sicuro se si applicano se si applicano alla situazione con cui ho a che fare. Ci sono un gran numero di file all'interno delle sottodirectory, quindi cercando di tenere traccia di quali file non sono più innescare gli eventi potrebbero diventare molto disordinati. Qualcuno ha qualche suggerimento per come fare uno di questi metodi?

È stato utile?

Soluzione

Potresti provare a farlo, ma ad essere onesti sembra un hack e sono scettico che Windows abbia qualsiasi metodo supportato per fare ciò che stai cercando di fare.Essenzialmente stai cercando di ascoltare su un flusso di scrittura.

Sembra che qualsiasi soluzione con cui stai lavorando in questo momento è una scatola nera, quindi probabilmente l'accesso al flusso probabilmente non è un'opzione.Tuttavia, c'è un altro approccio.Vorrei guardare come puoi creare un'unità virtuale con la tua app in Windows.In questo modo puoi avere l'applicazione di registrazione che scrive sul tuo percorso di guida virtuale che ti consentirà di gestire i flussi comunque che ti piace.Che può includere la scrittura a due posizioni separate allo stesso tempo.Sia Google Drive che alcuni stoccaggio locale di qualche tipo ad esempio.

Ecco una domanda Stackoverflow su come creare unità virtuali che dovrebbero iniziare: C #: Creare un'unità virtuale nel computer

Altri suggerimenti

hmmm ... Potresti provare a usare un timer ... in questo modo, puoi limitare quando si incende

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;
}
.

Hai guardato il filesystemwatcher oggetto?Se sto capita la domanda correttamente, potrebbe essere qualcosa che potresti voler usare .... Se dovessi inserire questo file di sicurezza all'interno di una determinata directory, è possibile utilizzare File.Copy per spostare il registro di sicurezza aggiornato inCartella di Google Drive ...

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top