TIdHttpを使った非同期の分割アップロードについて

解決


mel  2023-09-11 13:52:28  No: 151088  IP: [192.*.*.*]

ちょっと質問させてください。
今、ファイルの分割アップロードを非同期で行う部分を作成しているんですが
TThread..CreateAnonymousThread内でTIdHttpを使って非同期にアップロードしてますが
TIdHttpにファイルの分割されたStreamを渡す部分でつまずいています。
これに関して、何かヒントや参照URLなどがあればお教えください。

少しプログラムが複雑になったのですが、構成は以下の通りです。
1. アップロード関数のTThread..CreateAnonymousThread内で、既定サイズを超えてると分割アップロード関数を呼ぶ
2. 分割アップロード関数内でTFileStreamをチャンクサイズでTMemoryStreamに分割コピーし、
 分割数だけ以下の工程を繰り返す
 「非同期」フラグをチェックし
  a. 「同期」であればTIdHTTPを使ってアップロードする(逐次)
  b. 「非同期」であればTMemoryStreamをTListに保存し、TMemoryStreamを引数にして
    非同期アップロード関数を呼ぶ
      非同期アップロード関数では、TThread..CreateAnonymousThread内で
     引数のTMemoryStreamをサイトにアップロードする
3. 「非同期」の場合、すべてのチャンクの送信が完了したことを確認してTList内のTMemoryStreamを解放する
(注意:ここで言う「非同期」とは、すべての分割分を非同期かつ同時に送信することです)

この方法では、最終的にTList内のStreamをすべて解放しているにもかかわらず、
状況によってTMemoryStreamのメモリリークが発生します。
もしかしたら変数バインディングの影響かもと考えてます。

以上、何か構成自体に問題があるような気がしますが、よろしくお願いします。

編集 削除
mel  2023-09-12 12:31:35  No: 151090  IP: [192.*.*.*]

申し訳ないです。自分の単純なミスでした。
ネストされたAnonymousメソッドはメモリリークを起こすことがあるってことが頭の中にあって
それに引きずられて、他の部分を客観的に見ることができなくなってたみたいです。

編集 削除