|
반갑네요
저도 똑 같은 상황에서 똑같은 부분에서 똑같은 문제가 발생하고 있읍니다 ^^
저는 지금 다른 함수로 바꿀까 생각중인데...
혹시 문제 해결하셨으면 답좀 알려주시면 고맙겠읍니다.
문정원 님이 쓰신 글 :
: 임프님의 말씀대로 쓰레드를 사용하구요..
: 소켓을 이용해 파일을 전송받던도중 보내는 쪽에서 소켓을 닫아버린상황이에요..
: 받던쪽에서 소켓이 닫혔을때 쓰레드를 종료하면서 파일스트림을 삭제하도록 했는데
: 그 부분에서 오류가 납니다. 크리티컬섹션을 사용해봤는데두 안되네요..
:
: 받는쪽..
: TFileStream *fs = new TFileStream(...);
:
: while(!Terminated){
: ...
:
: if(FD_READ 일 경우)
: {
: 받아서 fs->Write...
: }
:
: if(FD_CLOSE)
: {
: Terminate();
: }
: }
:
: delete fs; //이 부분에서 오류가 납니다. (Write중이었나봐요)
:
: 꼭좀 해결해주세요..
:
:
:
: 박지훈.임프 님이 쓰신 글 :
: : 좀 이해가 안되는데요...
: : TfilerStream의 IO는 블러킹이므로 쓰레드를 쓰지 않는 한은 read/write 중에 다른 이벤트가
: : 발생할 수 없는데... 쓰레드를 쓰신다면 뭐 완전히 별개의 문제가 될 것이구요.
: :
: : 사용중에 삭제하려고 한다는 말씀은 어떤 상황을 말씀하시는 건지...
: : 에러를 보셨나요..? 어떤 에러인지 말씀해주시면 한번 찾아보지요.
: :
: : 그럼...
: :
: :
: : 문정원 님이 쓰신 글 :
: : : TFileStream *fs = new TFileStream(...);
: : :
: : : 해서 파일입출력을 사용중에
: : : 어떤 이벤트에로 delete fs를 하려구 하는데요
: : : fs를 사용중에 삭제를 할려구하면 에러가 나쟎아요..
: : : fs가 사용중이라면 사용이 끝날때까지 어떻게 기다려서 삭제해야 할까요..
|