2014-01-24 3 views
0

System.IO.FileStream 클래스를 사용하여 만든 Filehandle의 가치를 얻으려고합니다.FileStream.handle이 CE-ARM 릴리즈 구성에서 작동하지 않습니다.

using System.IO; 

Filestream fs = New FileStream("c:/1/txt",FileMOde.OpenorCreate,FileAccess.ReadWrite); 

Intptr file_ptr = fs.Handle; 

디버그 구성을 사용하여 XP-x86 OS에서 실행하면 정상적으로 작동합니다. 하지만 릴리스 구성으로 Ce-Arm OS에서 실행할 때 오류가 발생합니다.

System.IO.FileStreamHandle에 대한 정의와 유형 System.IO.FileStream의 첫 번째 인수를 받아들이는 확장자가없는 방법 Handle를 포함하지 않는 볼 수 있습니다 (당신은 using 지시문 또는 어셈블리 참조가?)

나는 변경하는 경우를 확인해야 릴리스 구성을 구축하려고합니다. 릴리스 구성이 모든 컴파일러 최적화를 켭니다. 그러나 inbuilt 클래스와 속성과는 무엇이 관계가 있습니까? 나는 정말로 혼란 스럽다. 도와주세요.

미리 감사드립니다.

답변

0

여기에 몇 가지 사항이 있습니다.

  1. Windows (데스크톱 및 CE)의 디렉터리는 슬래시가 아닌 백 슬래시 '\'문자로 구분됩니다. 데스크톱 Windows는 상관 없지만 Windows CE는 그다지 좋아하지 않을 것입니다.
  2. Windows CE에는 드라이브 문자 (또는 현재 디렉터리)가 없으므로 경로가 유효하지 않습니다.
  3. CF FileStream은 파일 핸들을 노출시키지 않으므로 좋은 이유가있을 수 있습니다. 이것이 오류의 구체적인 이유입니다. 관리되는 스트림 외부에서 핸들을 사용하면 관리 대상 부분이 불확정 상태에 빠져서 나쁜 일이 발생할 수 있습니다. 왜, 그 핸들이 필요한거야? 우리가 그 사실을 안다면 어쩌면 해결 방법을 제안 할 수는 있지만, 일반적으로 그 네이티브 핸들을 사용하면 나쁜 일이 일어날 것입니다.
+0

답장을 보내 주셔서 감사합니다. 내가 사용한 경로는 예제 일뿐입니다. 미안합니다 . CF Filestream은 파일 핸들을 공개하지 않습니다. 이것은 모든 혼란을 이끌고 있었다. 그 시점을 가져 주셔서 감사합니다. 대체 솔루션을 찾을 수 있습니다. – Prasaanth