2

Synapse for Delphi を使用していますが、もちろん HTTP ダウンロード中に GUI がフリーズします。ドキュメントを見ると、OnHeartbeat メソッドの使用が提案されています。

( http://www.ararat.cz/synapse/doku.php/public:howto:heartbeatを参照)

残念ながら、実際にはコード例が示されておらず、概念は単純ですが、使用法は明らかではありません。

これはソケット (オブジェクト) ごとの設定ですか、それともアプリケーション (クラス) ごとの設定ですか? また、コールバック プロシージャ自体がオブジェクトとして定義されているのも、少し変わっています。これを実際に使用したことがある人で、サンプル コードのスニピットを共有してくれる人はいますか?

4

1 に答える 1

2

別のスレッドでダウンロードを実行することをお勧めしますが、ドキュメントを読むと、イベント ハンドラーを OnHeartBeat イベントにフックする必要があります。

そのイベント ハンドラーで呼び出すことができますApplication.ProcessMessages()が、実際にイベントが必要になる前にイベントが発生する可能性があるため、これは危険です。Paint ルーチンのみを呼び出すカスタム メソッドを使用します。フォームのハンドルをパラメーターとして渡すか、任意のコントロールを TWinControl にキャストしてハンドル プロパティを使用することができます。これにより、フォーム/コントロールが再描画されますが、マウス/キーボードの操作は許可されません。

procedure AllowRepaints(h: HWND);
var
  m: tMsg;
begin
  while PeekMessage(m, h, WM_PAINT, WM_PAINT, PM_REMOVE) do
    DispatchMessage(m);
end;
于 2009-11-29T19:39:14.220 に答える