2009-11-29 7 views
2

저는 Synapse for Delphi를 사용하고 있습니다.하지만 HTTP 다운로드 중에는 물론 GUI가 멈 춥니 다. 문서를 보면 OnHeartbeat 메서드를 사용하는 것이 좋습니다.누구나 Synapse의 Heartbeat 기능을 사용하는 좋은 예가 있습니까?

은 (http://www.ararat.cz/synapse/doku.php/public:howto:heartbeat 참조)

불행하게도, 그들은 실제로 코드 예제를 제공하지 않으며, 개념은 간단하지만, 사용이 아닌 분명하다.

이것은 소켓 (개체) 설정 또는 응용 프로그램 (클래스) 설정마다 있습니까? 또한, 콜백 프로 시저 자체는 약간 특이한 객체로 정의됩니다. 실제로이 코드를 사용하여 샘플 코드 스 니펫을 공유 한 사람이 있습니까?

답변

2

별도의 스레드에서 다운로드를 실행하는 것이 좋지만 설명서를 읽으려면 OnHeartBeat 이벤트에 이벤트 처리기를 연결해야합니다.

해당 이벤트 처리기에서 Application.ProcessMessages()을 호출 할 수 있습니다. 실제로는 이벤트를 발생시키기 전에 이벤트가 발생할 가능성이 있기 때문에 위험합니다. 사용자 정의 메소드를 사용하여 Paint 루틴 만 호출합니다. 폼의 핸들을 매개 변수로 전달하거나 모든 컨트롤을 TWinControl에 캐스팅하고 handle 속성을 사용할 수 있습니다. 이렇게하면 양식/컨트롤이 다시 칠해 지지만 마우스/키보드 상호 작용은 허용되지 않습니다.

procedure AllowRepaints(h: HWND); 
var 
    m: tMsg; 
begin 
    while PeekMessage(m, h, WM_PAINT, WM_PAINT, PM_REMOVE) do 
    DispatchMessage(m); 
end; 
+0

훗, 내가 스레드를 받고 문제가 가끔 윈도우/맥 OS/윈도우에 걸쳐 안정적으로 작동했다, 그래서 나는 간단한 방법을했다, 심지어 멀리 가서 바로 인터넷 전화에 * 다른 * 프로세스를 사용하지만, 견본을 가져 주셔서 감사합니다. 많은 사람들이 유용하다고 생각합니다. – Noah

+0

"... OnHeartBeat 이벤트에 이벤트 처리기를 연결해야하는 설명서를 읽는 중입니다." 이것이 내가하는 코드를 찾는 것입니다. (시각적 구성 요소를 사용하지 않음에 유의하십시오). – Noah