tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル Re^2: Delgateの受け渡し?
投稿日: 2009/03/13(Fri) 16:46
投稿者ダンボ
魔界の仮面弁士さん、いつも有難うございます。

> Timer クラスには 3 種類ありますが、今回使いたいのは、
> System.Windows.Forms.Timer のクラスなのですね?

それしか知りませんでした。急遽下記を眺めています。
http://www.atmarkit.co.jp/fdotnet/dotnettips/373threadtimer/threadtimer.html
http://www.atmarkit.co.jp/fdotnet/dotnettips/374timerstimer/timerstimer.html
http://www.atmarkit.co.jp/fdotnet/dotnettips/372formstimer/formstimer.html
System.Windows.Forms.Timerで十分と思います。

> (1) Timer に ProfileClass を関連付けたい。
そうです。最初は共通モジュールに
    Public Shared SlideTimer As Timer
    Public Shared SlideProfile As ProfileClass
でうまく制御できていました。ただスマートでないのでカプセル化したかっただけです。
Tagプロパティの活用で十分ですね。

> (2) SlideTimerClass 自身がタイマー処理を行いたい。
それは違います。あくまでも利用者クラス内のTick処理SubにTickイベントを
発生させるだけです。

> (3) SlideTimerClass の利用者が、タイマー処理を行いたい。
そうです。最初は利用者クラス内で、
        AddHandler SlideTimer.Tick, AddressOf Slide_Tick
        RemoveHandler SlideTimer.Tick, AddressOf Slide_Tick
を発行してうまく動作していました。

> (4) 利用者側でデリゲートを用意し、それを SlideTimerClass に処理させたい。
そうです。RemoveHandlerの発行箇所が複数あるので、それならばSlide_Tickアドレスを
SlideTimerClassに覚えさせて、
 NewまたはStartでAddHandler
 FinalizeまたはStopでRemoveHandler
できないかなぁ、と考えた次第です。

事情があってフォーム毎にtimerコントロールを貼り付けたくなく、システムで唯一の
タイマーを各フォームが排他で使うという基本方針でこんなになっています。
現状うまく動作しているのを、もう少しきれいなコンパクトなコードにできないかと
いう試みですので、(4)はあきらめてもよいです。

ただデリゲートの処理(呼ぶほうはともかく受ける方は)ってどうするのかなぁ
というのがここ1年くらいモヤモヤしているところです。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。