tagCANDY CGI コールバック関数
VB2005用トップページへVBレスキュー(花ちゃん)のトップページVB6.0用のトップページ
コールバック関数
このスレッドはロックされています。記事の閲覧のみとなります。
元に戻る スレッド一覧へ 記事閲覧
このページ内の検索ができます。(AND 検索や OR 検索のような複数のキーワードによる検索はできません。)

コールバック関数 [No.183の個別表示]
日時: 2010/04/25 18:27
名前: ふつうのこ



VBについての質問ではないのでこちらに投稿しました。

デリゲードについて勉強してるんですが、デリゲードってコールバック関数の事だと知りました。
メリットについてちょっと調べたのですが、よく分かりません。

忙しい人が、"これやっておいて"と頼む状況だと思うのですが、同期を取る為に待っているなら自分でその関数を呼び出せばいいと思うんです。
ほんとに忙しくて同時進行するならメリットがあると思うんですが。

割り込み処理には必須と書いてありましたが、それもよく分かりません。

どのような事かは分かったので、そうしなければならない理由、メリットを分かりやすく説明してもらえないでしょうか?
メンテ

Page: 1 |

Re: コールバック関数  (No.1) [スレッド一覧へ]
日時: 2010/04/27 08:47
名前: 花ちゃん


ウインドウ位置について - ふつうのこ 10/04/09-22:59 No.10053  の件は、
どうなったのでしょうか?
例え、気に入らないレスであったにせよ、質問に対して答えてくれた方に返事位するのは
最低限の礼儀ではないでしょうか?
メンテ
Re: コールバック関数  (No.2) [スレッド一覧へ]
日時: 2010/05/26 09:20
名前: 魔界の仮面弁士


> VBについての質問ではないのでこちらに投稿しました。
VB.NET 掲示板で良いと思います。


> デリゲードについて勉強してるんですが
デリゲードではなく、
デリゲートですよね。(Delegate)


> デリゲードってコールバック関数の事だと知りました。
一つのデリゲート インスタンスに複数の関数呼び出しを登録することもできますし、
関数だけではなく戻り値の無いメソッドも扱えますので、厳密には同じものでは
ありませんが…端的にはコールバック関数のようなものと言えるかも知れませんね。


> 忙しい人が、"これやっておいて"と頼む状況だと思うのですが
そういう使い方もできますが、処理ロジックを外注する際にも使われます。

.NET で言えば、Array.Find(Of T) メソッドに使われる Predicate(Of T) デリゲートや、
Array.ForEach(Of T) メソッドに使われる Action(Of T) デリゲートなどの利用パターンです。

 Dim a() As Object = {123, Now, "test"}
 Array.ForEach(a, AddressOf MsgBox)


配列の内容をどのように検索するか、個々のメンバをどのように処理するのかは
Array クラス側では事前に定義できません。そのため、処理内容をデリゲートを通じて
外部から指定してもらうという形になっています。

そして、これを発展させたものが、いわゆる「イベント」です。
代表的なのは、Click イベントなどに利用される EventHandler デリゲートですね。

たとえば Button クラスは、クリック時に何かの処理を行わせるためのコントロールですよね。
しかしその処理内容がどういう物であるかを、Button クラス自身は知りません。
処理内容を知っているのは、ボタンを使う側(一般的には Form)です。

そこで、Click イベント(として登録される EventHandler デリゲート)を通じて
Button を利用する側に、その処理内容を提示してもらう形をとっています。

# なおイベントやデリゲートを使わずとも、Button を継承して OnClick メソッドを
# オーバーライドすれば、クリック時の処理を再定義することはできます。
メンテ

Page: 1 |