質問

現在、インスタントアップロードのためにコンピュータ上のGoogle Driveディレクトリに書き込まれているため、SecurityカメラからデータをコピーするためにWindowsサービスを操作しています。提供された再生ソフトウェアによる作成直後にファイルがアクセス可能であるため、データストリームをすぐにコピーすることができます。そのようにして、録音が中断されてもビデオがあります(ファイルは10分の時間ブロックです)。

現在、ディレクトリを見ることができるサービスを作成しましたが、これらのファイルを見るための最善の方法を決定する必要があります。 10分間継続的に変更されているので、私は多数の変更されたイベントを受け取ります。私は最初の作成をキャプチャしてデータのストリーミングを開始できる方法があることを願っていました。ここの懸念は、私が記録ストリームを覆しないようにする必要があるということです。

これが不可能であるか比較的単純な場合は、最後の書き込み時間でいくつかのロジックを使用してファイルが書き込まれていないときに検出する必要がありますが、私は最善の方法に関する提案を探しています。これを行うかもしれません。私は提案された解決策を知っていますここ。私が扱っている状況に。サブディレクトリ内には多数のファイルがあり、どのファイルがもはやイベントを起動しなくなったファイルを追跡しようとしています。これらの方法のどちらの方法の実行方法についても誰もがいかもありませんか?

役に立ちましたか?

解決

あなたはこれをやろうとすることができましたが、これはハックのように思え、私はあなたがしようとしていることをするためのサポートされているサポートされている方法があることを懐疑的です。基本的にあなたは書き込みストリームで聴きようとしています。

今すぐ働いているどんな解決策のように聞こえます。これは黒い箱です。しかし、別のアプローチがあります。私はあなたがWindowsであなたのアプリを使って仮想ドライブを作成する方法を調べます。そうすれば、録音アプリケーションを仮想ドライブパスに書き込むことができます。これはそれらを2つの別々の場所に同時に書き込むことを含むことができます。たとえば、Googleドライブといくつかのローカルストレージの両方があります。

これは、あなたが始めるべき仮想ドライブを作成する方法に関するスタックオーバーフローの質問です: C#:コンピュータ

に仮想ドライブを作成する

他のヒント

HMMM ...あなたはタイマーを使ってみることができました...このように、あなたはそれが火災時に制限することができます

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

filesystemwatcher オブジェクトを見ましたか。私が正しく質問を理解している場合、それはあなたが使うことを望むかもしれないものかもしれません....このセキュリティファイルを特定のディレクトリ内に置くことになっていたら、ファイル.copyを使用して更新されたセキュリティログを移動することができます。Googleドライブフォルダ...

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top