掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
TIdHttpを使った非同期の分割アップロードについて (ID:151088)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
ちょっと質問させてください。 今、ファイルの分割アップロードを非同期で行う部分を作成しているんですが 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のメモリリークが発生します。 もしかしたら変数バインディングの影響かもと考えてます。 以上、何か構成自体に問題があるような気がしますが、よろしくお願いします。
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.