|
: 임펠리테리입니다.
:
: FastNet 컴퍼넌트는 요즘 거의 안쓰지만.. 아마도 TNMFtp 컴퍼넌트가 비동기로 동작하기 때문일겁니다. List 메소드의 내부가 별도의 쓰레드로 동작하든지, 혹은 내부에 Application->ProcessMessages()가 있다면 비동기로 동작할 수 있습니다. 비동기로 동작한다는 말은, 다시 말해서 List() 메소드를 호출한 후 모든 리스트를 받아온 후 이벤트를 처리하는 것이 아니라 바로 다른 이벤트들을 처리할 수 있는 상태가 됩니다. 그런데, List 동작이 아직 안끝난 상태에서 다시 List()를 호출하게 되면 에러를 내게 되는 것일 겁니다. 추리였습니다.
:
: 만약 이같은 경우라면.. List()를 호출한 직전에 디렉토리를 변경하는 역할을 하는 버튼(혹은 리스트박스를 더블클릭하는 경우라면 리스트박스)를 disable 시켜놓고, 리스팅이 다 끝난 후, 즉 OnSuccess나 OnError 등의 이벤트 핸들러에서 다시 enable 시키면 되겠지요.
:
: 이런 경우, 넷마스터 컴퍼넌트에 포함된 헬프에는 이런 내용이 나오지 않으므로 소스를 뒤져보는게 확실한데, 넷마스터는 상용 컴퍼넌트이기 때문에 소스가 없습니다. 한번 막히게 되면 해결책이 막막하게 되지요. 그래서, 넷마스터보다는 소스까지 공개되어 있는 Indy나 ICS등의 다른 컴퍼넌트를 사용하는 것이 좋습니다. (두가지 모두 여기 자료실에 있습니다.)
:
: 그럼 참고하시길...
우선 답변 감사합니다. 위의 말씀하신데로... 하였는데... list() 메쏘드를 실행한 후 Item들은 정상적으로 ListBox에 출력되었지만 OnSuccess 이벤트 핸들러에 들어가질 않습니다. 음... 그리고 참고적으로 Application->ProcessMessages()는 사용하지 않았습니다.
|