お世話になります。
現在黙々と.NET Frameworkを勉強しておりますが、
日に日に理解できなかったことが分かるようになります。
今まで何でこんな難しく書いてるんだ!
とイライラしたことが多々ありますが、それすらも楽しめます。
以下本文。
スレッドについて検索してる祭、コールバックの使い方を目にする機会がありました。
コールバックを使うことでコードが見やすくきれいになっており感動しました。
引用:CodeZine
URL:https://codezine.jp/article/detail/139?p=3
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Class ThreadInfo
'スレッドが結果を返すためのコールバックデリゲート
Delegate Sub MyThreadCallback(ByVal returnValue As Integer)
Private callbackDelegate As MyThreadCallback
'スレッドに渡す値
Public SleepTime As Integer
'インストラクタ Public Sub New(ByVal stime As Integer, _ ByVal callback As MyThreadCallback) Me.SleepTime = stime Me.callbackDelegate = callback End Sub '別スレッドで実行するメソッド Public Sub MyThreadMethod() 'sleepTimeミリ秒停止する System.Threading.Thread.Sleep(Me.SleepTime) 'コールバックデリゲートを実行して結果を返す If Not (Me.callbackDelegate Is Nothing) Then Me.callbackDelegate(System.Environment.TickCount) End If End Sub
End Class
Class MainClass
'エントリポイント
Public Shared Sub Main()
'ThreadInfoオブジェクトの作成
'スレッドにデータを渡す
Dim info As New ThreadInfo(1000, _
New ThreadInfo.MyThreadCallback( _
AddressOf GetCallbackResult))
'Threadオブジェクトを作成する Dim t As New System.Threading.Thread( _ New System.Threading.ThreadStart( _ AddressOf info.MyThreadMethod)) 'スレッドを開始する t.Start() Console.ReadLine() End Sub 'スレッド終了時に呼び出されるコールバックメソッド Private Shared Sub GetCallbackResult(ByVal returnValue As Integer) '結果を表示する Console.WriteLine(returnValue) End Sub
End Class
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
プログラマ歴が長い方にとって、くだらないことだとおもいますが、
自分は素直にこのようなコードを書きたいと思いました。
皆さんにとって素敵だなと思ったコード、規約、命名、コメント等
なんでもありです、皆さんの凄いを教えてください!
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。