한가지. 해결이. 잘 안되어서.. 그러는데여~~~~
우.음..쓰레드내에서 동적으로 객체를 생성시켰는데....
하나의 쓰레드당..하나의 객체가 쓰레드내에서 동적으로 생성이 됩니다...
그러니깐..
쓰레드가 생성되자마자.. 객체가 생성이 됩니다...
그런데.. 한가지 문제는.. 그생성된 객체에 대한 이벤트가 있는데...
그 쓰레드내에서 동적으로 생성된 객체에 대해서 이벤트가 발생하였을 때 이벤트처리를 어떻게 해주어야 할지... 해결이. 잘 안되네여.....
우.음.. 만약 쓰레드가 수십개정두. 생성이 되면.. 마찬가지로 객체두 수십개가 생성이 됩니다.. 그리고 동적으로 생성된 객체들은.. 연산을 수행하므로 이벤트가. 계속해서.. 발생이 되고여.. 이런 처리들을.. 그때그때.. 해주어야 하는데...
잘 안되구.. 답답해서. 이렇게.. 질문을 드립니다...
제가 한방법은... 우선 그 동적으로 생성시킬 객체에 대한 것을.. 디자인시에..
하나를 정적으로 폼에 박아놓구선. 그 박아논 component에 대한 이벤트 처리 코드를 작성 해주고 그것을 쓰레드내에서 동적으로 생성된 객체에 할당하는 식으로 했는데..
여러개일경우... 문제가 되는거. 같더군여...
코드를 보면.. 다음과 같습니다..
파일을 전송하는 것을 쓰레드내에서 처리를 하게 되는 코드입니다..
쉽게 얘기해서 파일을 주고 받는데... 여러명의 사람들로부터 동시에. 여러개의
파일을 다운로드 받는..것입니다..
procedure TForm1.Button1Click(Sender: TObject);
var
GetFile: Array of TFileGet ;
begin
SetLength(GetFile, 만들구 싶은 쓰레드수) ;
for i:=0 to 쓰레드수-1 do
begin
GetFile[i] := TFileGet.Create(True) ;
.........
GetFile[i].OnProgress := FTPClient1Progress ; <== 이벤트 할당...
GetFile[i].Resume ;
end ;
end ;
FTPClientProgress 이벤트 처리부분은. 기존에.. 폼에 동적으로 생성시킬..
Component를 정적으로 박아놓고 이벤트처리부분에 대한 코드를 입력한후..
동적으로 생성이 될때마다.. 위의 방법으로 할당을 했는데....
여러개가 생길경우... 문제가 있더라구여..
글구. 위의 이벤트(OnProgress)안에는.. 파일을 주고받는 상태가. .계속해서. 체크가 되어지고 사용자는. 발생된 객체에 대한 상태를 모두 보아야 하는데..
잘 안되어서 이렇게 질문들 드립니다...
그럼.. 부탁드립니다...
쓰레드 안의 멤버함수로 그것을 정의하세요.
그리고 쓰레드 생성하면서 객체생성하면서 OnProgress 는 FTPClientProgress..
형태로 할당해 주면 문제없이 되겠죠..
그걸 왜 밖으로 빼내서 괜히 고생하시는지..
여러개의 쓰레드가 바깥의 하나의 객체의 것을 이용하면 서로 비동기적으로
그 이벤트에 접근하니까 문제가 될거 같군요..
쫑현이 wrote:
> 한가지. 해결이. 잘 안되어서.. 그러는데여~~~~
> 우.음..쓰레드내에서 동적으로 객체를 생성시켰는데....
> 하나의 쓰레드당..하나의 객체가 쓰레드내에서 동적으로 생성이 됩니다...
> 그러니깐..
> 쓰레드가 생성되자마자.. 객체가 생성이 됩니다...
> 그런데.. 한가지 문제는.. 그생성된 객체에 대한 이벤트가 있는데...
> 그 쓰레드내에서 동적으로 생성된 객체에 대해서 이벤트가 발생하였을 때 이벤트처리를 어떻게 해주어야 할지... 해결이. 잘 안되네여.....
> 우.음.. 만약 쓰레드가 수십개정두. 생성이 되면.. 마찬가지로 객체두 수십개가 생성이 됩니다.. 그리고 동적으로 생성된 객체들은.. 연산을 수행하므로 이벤트가. 계속해서.. 발생이 되고여.. 이런 처리들을.. 그때그때.. 해주어야 하는데...
> 잘 안되구.. 답답해서. 이렇게.. 질문을 드립니다...
> 제가 한방법은... 우선 그 동적으로 생성시킬 객체에 대한 것을.. 디자인시에..
> 하나를 정적으로 폼에 박아놓구선. 그 박아논 component에 대한 이벤트 처리 코드를 작성 해주고 그것을 쓰레드내에서 동적으로 생성된 객체에 할당하는 식으로 했는데..
> 여러개일경우... 문제가 되는거. 같더군여...
> 코드를 보면.. 다음과 같습니다..
> 파일을 전송하는 것을 쓰레드내에서 처리를 하게 되는 코드입니다..
> 쉽게 얘기해서 파일을 주고 받는데... 여러명의 사람들로부터 동시에. 여러개의
> 파일을 다운로드 받는..것입니다..
>
> procedure TForm1.Button1Click(Sender: TObject);
> var
> GetFile: Array of TFileGet ;
> begin
> SetLength(GetFile, 만들구 싶은 쓰레드수) ;
>
> for i:=0 to 쓰레드수-1 do
> begin
> GetFile[i] := TFileGet.Create(True) ;
> .........
> GetFile[i].OnProgress := FTPClient1Progress ; <== 이벤트 할당...
> GetFile[i].Resume ;
> end ;
> end ;
>
> FTPClientProgress 이벤트 처리부분은. 기존에.. 폼에 동적으로 생성시킬..
> Component를 정적으로 박아놓고 이벤트처리부분에 대한 코드를 입력한후..
> 동적으로 생성이 될때마다.. 위의 방법으로 할당을 했는데....
> 여러개가 생길경우... 문제가 있더라구여..
> 글구. 위의 이벤트(OnProgress)안에는.. 파일을 주고받는 상태가. .계속해서. 체크가 되어지고 사용자는. 발생된 객체에 대한 상태를 모두 보아야 하는데..
> 잘 안되어서 이렇게 질문들 드립니다...
> 그럼.. 부탁드립니다...