문제

현재 Windows 서비스에서 작업하고 즉시 업로드를 위해 컴퓨터의 Google 드라이브 디렉토리에 기록되므로 보안 카메라에서 데이터를 복사합니다. 제공된 재생 소프트웨어가 생성 한 직후에 파일이 액세스 할 수 있으므로 데이터 스트림을 즉시 복사 할 수있는 경우 녹음이 중단 된 경우에도 일부 비디오가 있으면 해당 방법이 필요합니다 (파일은 10 분 시간 블록입니다).

현재 디렉토리를 볼 수있는 서비스가 있지만 이러한 파일을 보는 가장 좋은 방법을 결정하는 데 어려움이 있음을 알 수 있습니다. 10 분 동안 지속적으로 수정되기 때문에 많은 수의 이벤트를 받게됩니다. 초기 작성을 캡처하고 두 번째 파일로 데이터 스트리밍을 시작하는 방법이있을 수 있기를 바랍니다. 여기에있는 내 관심사는 내가 녹음 스트림을 오버런하지 않도록해야한다는 것입니다.

이것이 가능하거나 상대적으로 간단하지 않으면 파일이 마지막 쓰기 시간과 함께 일부 논리를 사용하여 파일이 더 이상 쓰여지지 않으면 탐지해야합니다. 그러나 나는 가장 좋은 방법에 대한 제안을 찾고 있습니다. 이를 위해서는 일일 수 있습니다. 나는 솔루션을 제안한 솔루션을 알고 있습니다. 내가 다루고있는 상황에. 하위 디렉토리에는 많은 수의 파일이 있으므로 더 이상 이벤트를 트리거하지 않는 파일을 추적하려는 것은 매우 지저분해질 수 있습니다. 이 방법 중 하나를 수행하는 방법에 대한 제안이 있습니까?

도움이 되었습니까?

해결책

당신은 이것을하려고 노력할 수 있지만 솔직히 말해서 해킹처럼 보입니다. Windows에서는 Windows에서는 당신이하려는 것을 할 수있는 방법을 지원하는 방법이 있습니다.본질적으로 쓰기 스트림에서 듣고 싶습니다.

당신이 지금 일하는 솔루션이 무엇이든간에 검은 색 상자이므로 스트림에 직접 액세스하는 옵션은 아닙니다.그러나 또 다른 접근법이 있습니다.Windows에서 앱으로 가상 드라이브를 만드는 방법을 살펴 보겠습니다.그렇게하면 녹화 응용 프로그램을 가상 드라이브 경로에 쓰는 응용 프로그램을 가질 수 있지만 원하는 스트림을 처리 할 수 있습니다.동시에 두 개의 별도 위치에 쓰는 것을 포함 할 수 있습니다.Google 드라이브와 일부 종류의 일부 로컬 저장 장치 모두.

시작해야 할 가상 드라이브를 만드는 방법에 대한 StackOverflow 질문은 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;
}
.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top