2013-07-18 4 views
2

가능하면 PCL 코어에서 crossplatform filesystemwatcher를 구현하는 데 관심이 있습니다. mvvmcross 컨텍스트 내에서 일반적인 접근 방법은 무엇입니까? 내 첫번째 생각은 설정 while 루프를 한 후, 파일 - 플러그인을 통해 다른 장치의 파일 시스템을 얻을 수 있었다 그러나 그것은 고통스럽게 비효율적 소리 :mvvmcross와 함께 crossplatform filesystemwatcher 구현

while (!File.Exist) 
{ 
    Thread.sleep(1000); 
} 
//do stuff 

감사 마크

답변

0

타겟팅하는 플랫폼에 따라 일부 플랫폼에서 파일 감시자를 지원합니다. 안드로이드는 FileObserver 클래스입니다 (예 : Using android.os.FileObserver to watch "\data" directory not working 참조)

네이티브 파일 시스템 감시자가없는 플랫폼에서 시간을 확인하는 것이 최선책이라고 생각합니다. 일반적으로 Timer이 아닌 Timer을 사용하는 것이 좋습니다. 주로 Timer이 일반적으로 메모리 효율이 높기 때문에 또한 Thread.Sleep을 PCL에서 사용할 수 없기 때문에 사용하는 것이 좋습니다.

iOS 및 WP와 같은 플랫폼에서 각 앱의 파일 시스템 액세스를 샌드 박스로 만들면 실제로 파일 시스템 감시자를 구현하지 않아도됩니다. 앱이 앱의 파일을 읽거나 쓸 수있는 유일한 앱이기 때문에 의심 스럽습니다. 시스템을 사용하는 경우 파일 시스템 내용이 변경 될 때 쉽게 해결할 수 있어야합니다.

0

파일의 자주 미스-개념입니다. 존재하는 것은 파일이 있는지 확인하는 것입니다. ...

실제로 검사하는 내용은 파일에 액세스 할 수있는 것입니다. 따라서 파일이 공유에 있었고 올바른 사용 권한이 없으면 false를 반환 할 수 있습니다.

플랫폼마다 다를 수 있으므로 조심하십시오.

+0

경고 해 주셔서 감사합니다. – MarkAArnold

관련 문제