C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

ログ内検索
  • キーワードを複数指定する場合は 半角スペース で区切ってください。
  • 検索条件は、(AND)=[A かつ B] (OR)=[A または B] となっています。
  • [返信]をクリックすると返信ページへ移動します。
キーワード/ 検索条件 /
検索範囲/ 強調表示/ ON (自動リンクOFF)
結果表示件数/ 記事No検索/ ON
大文字と小文字を区別する

No.1704 の関連記事表示

<< 0 >>
■1704  Re[4]: 子コントロール
□投稿者/ 津田子 -(2005/10/24(Mon) 16:56:17)

    分類:[C#] 

    まどかさん、お返事ありがとうございます。

    > #「津田子」「おいら」、どっちなんだろう。。。
    Ans.
    18才のぴちぴち女子高生です☆
    …見え透いた嘘ですみません。でも一応"をなご"です。お名前から判断させていただくと、まどかさんもをなごですよね?

    > もしかして、Controls.Addだけしてませんか?
    > #大事なことを忘れてませんか?S○○w

     はい、ものの見事に忘れていました。またまた「いやんハズカシイ」な展開ですね…もっと精進します。
    えぇと、確かに○ho○で表示はされたのですが、今度はフォームが2つになってしまいました。プログラムの道は険しいッスね(遠い目)
記事No.1697 のレス /0過去ログ2より / 関連記事表示
削除チェック/

■1704  WebClientインスタンスのプーリングについて
□投稿者/ Hirotow -(2007/03/03(Sat) 14:42:13)
>

    分類:[C# (Windows)] 

    現在C#を用いてダウンロード支援ツールの開発を行っています。

    このツールは、

    ・アイテムオブジェクト
     ・ダウンロードの設定および状態
     ・これらを表示するためのListItemオブジェクト
     ・動的に割り当てられるWebClientインスタンス
    ・マネージャオブジェクト。
     ・アイテムオブジェクトのコレクション
     ・WebClientインスタンス

    によって構成されており、メインフォームに設置されたタイマーによりマネージャオブジェクト内のアイテムオブジェクトにマネージャオブジェクトのWebClientインスタンスを割り当てダウンロードを行う機構になっています。

    しかしながらこの構造では制限が多いため(単一のリストしか持つことができず、また同時にひとつしかダウンロードを行えない)、複数のマネージャオブジェクトが共通のプールからWebClientオブジェクトを取得しこれをアイテムオブジェクトに割り当てられる構造にしたいと考えています。
    また、全体および各マネージャに割り当て可能なWebClientの数(すなわち同時接続数)はユーザーが任意のタイミングで変更可能なものとします(Irvineの同時接続数制限のような感じです)。

    私の現在の知識ではこの実装方法がわからないのでご教授いただけると幸いです。
    よろしくお願いします。
親記事 /過去ログ10より / 関連記事表示
削除チェック/

■1710  Re[1]: WebClientインスタンスのプーリングについて
□投稿者/ aoa -(2007/03/03(Sat) 21:10:47)
    『増補改訂版Java言語で学ぶデザインパターン入門マルチスレッド編』
    http://www.hyuki.com/dp/dp2.html
    を読むといいと思います。
    特に8章の「Worker Thread」がそのまま使える気がします。
記事No.1704 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1712  Re[1]: WebClientインスタンスのプーリングについて
□投稿者/ 渋木宏明(ひどり) -(2007/03/03(Sat) 21:42:15)
>
    No1704 (Hirotow さん) に返信
    > 同時にひとつしかダウンロードを行えない

    WebClient.DownloadXXXAsync() を使えば、同時並行に複数のダウンロードを実行することが出来ます。
記事No.1704 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1713  Re[2]: WebClientインスタンスのプーリングについて
□投稿者/ Hirotow -(2007/03/03(Sat) 22:37:58)
>
    質問がわかりにくかったみたいですね。
    すみません。

    Windows.Formsなので当然非同期は使っています(^^;
    そういうことではなく、プログラム全体で同時接続数の管理も兼ねて安全にWebClientを使いまわしたいのです。

    ソリューションを貼り付けるので質問文の補助にしてください。
    http://hcm.wankuma.com/data/cvd20070303a.cab
記事No.1704 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1714  Re[3]: WebClientインスタンスのプーリングについて
□投稿者/ 渋木宏明(ひどり) -(2007/03/03(Sat) 23:02:12)
>
    > Windows.Formsなので当然非同期は使っています(^^;

    なら、後は適当にプーリングの仕組みを自作すればいいだけでは?
記事No.1704 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1716  Re[4]: WebClientインスタンスのプーリングについて
□投稿者/ Hirotow -(2007/03/03(Sat) 23:20:40)
>
    No1714 (渋木宏明(ひどり) さん) に返信
    >>Windows.Formsなので当然非同期は使っています(^^;
    >
    > なら、後は適当にプーリングの仕組みを自作すればいいだけでは?
    >
    がんばってみます。
記事No.1704 のレス / END /過去ログ10より / 関連記事表示
削除チェック/

■1717  Re[5]: WebClientインスタンスのプーリングについて
□投稿者/ なちゃ -(2007/03/04(Sun) 00:31:48)
    WebClientってプーリングしなきゃならないようなクラスでしたっけ?
    いや試してないのでどの程度差があるかは分かってないんですが…
記事No.1704 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1720  Re[6]: WebClientインスタンスのプーリングについて
□投稿者/ 渋木宏明(ひどり) -(2007/03/04(Sun) 06:14:36)
>
    No1717 (なちゃ さん) に返信
    > WebClientってプーリングしなきゃならないようなクラスでしたっけ?

    複数のダウンロードを同時並行に扱うなら、そして、動的にダウンロード数の管理を行いたいなら、プーリングの機構が必要じゃないですか?

    1個の WebClient で、ダウンロードが完了する前に何度も DownloadXXXAsync() 呼び出しが行えるようなつくりになっているなら話は別ですが。

    ちなみに、ここで言うプーリングは SqlConnection のような接続のプールではなく、スレッドプールのような「WebClient のインスタンス」のプールの話だと思います。
記事No.1704 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1723  Re[7]: WebClientインスタンスのプーリングについて
□投稿者/ Hirotow -(2007/03/04(Sun) 10:57:30)
>
    > ちなみに、ここで言うプーリングは SqlConnection のような接続のプールではなく、スレッドプールのような「WebClient のインスタンス」のプールの話だと思います。

    そういうことです。

    # ただ、結構仕様は変わりそうです。
記事No.1704 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1724  Re[8]: WebClientインスタンスのプーリングについて
□投稿者/ 渋木宏明(ひどり) -(2007/03/04(Sun) 11:18:59)
>
    >>ちなみに、ここで言うプーリングは SqlConnection のような接続のプールではなく、スレッドプールのような「WebClient のインスタンス」のプールの話だと思います。
    >
    > そういうことです。

    であれば、プールの実装自体は簡単なもので十分なはずです。
    List<WebClient> を lock で保護しつつ使う、とか。

記事No.1704 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1726  Re[9]: WebClientインスタンスのプーリングについて
□投稿者/ aoa -(2007/03/04(Sun) 13:42:06)
    2007/03/04(Sun) 14:11:24 編集(投稿者)

    WebClientをプーリングするのではなく、
    スレッドをプーリングしてその中でWebClientのインスタンスをnewすればいいと思ったのですが、
    非同期のDownloadXXXAsync()を使う、ということでしたね。
    勘違いしていました。すいません。
記事No.1704 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1771  Re[10]: WebClientインスタンスのプーリングについて
□投稿者/ 渋木宏明(ひどり) -(2007/03/05(Mon) 23:13:27)
>
    遅レスですが。。。

    > 2007/03/04(Sun) 14:11:24 編集(投稿者)
    >
    > WebClientをプーリングするのではなく、
    > スレッドをプーリングしてその中でWebClientのインスタンスをnewすればいいと思ったのですが、
    > 非同期のDownloadXXXAsync()を使う、ということでしたね。
    > 勘違いしていました。すいません。

    非同期処理(=DownloadXXXAsync())を採用することによって、ダウンロード処理に関しては、コードで明示的にスレッドを起こす必要はなくなります。

    非同期リクエストを行わなくても、どうも WebClient は内部で勝手にスレッドを起こしている気配も感じられます。
    また、WebClient によるセッションにはランタイムでその最大数に制限を課していたはずです。

    なので、ダウンロード処理と、ダウンロードしたコンテンツの処理を分離することで、スレッドの無駄遣いを抑えたり、セッション数の制限からくる無駄なスレッドのブロックを避けられる可能性があります。

記事No.1704 のレス /過去ログ10より / 関連記事表示
削除チェック/

■1773  Re[11]: WebClientインスタンスのプーリングについて
□投稿者/ Hirotow -(2007/03/05(Mon) 23:39:04)
>
    > なので、ダウンロード処理と、ダウンロードしたコンテンツの処理を分離することで、スレッドの無駄遣いを抑えたり、セッション数の制限からくる無駄なスレッドのブロックを避けられる可能性があります。

    分離。
    面倒なのでコンポジションは好みではないのですが、正論的にはそうすべきですね。

    ほかには、ダウンロードはたぶんリソースを消費しやすい処理だと思うので、使いまわすかその都度破棄するかしなければいけないと。
    あとリジュームなどの割と高度な機能を組み込むとなるとWebClientでは力不足なので(できないことはなさそうだが)、WebRequest/WebResponseでの独自実装(ほとんどどぼんさんとこの流用ですが)も作りたいところです。

    # 花粉症で頭が回らない(泣)
記事No.1704 のレス /過去ログ10より / 関連記事表示
削除チェック/



<< 0 >>

パスワード/

- Child Tree -