タイトル : 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年くらいモヤモヤしているところです。 |