DebugTimer


PageLastUpdate:2007-07-24/today: - /yesterday: -

DebugTimer

2007/07/23
デバッグ用のマーカーとして、メッセージボックスを利用できる静的クラスです。
インスタンスの宣言は必要ありません。
呼び出しと呼び出しの間隔を出力するのでパフォーマンスのボトルネックがすぐわかります。

  1. 既存の「MessageBox.Show」をそのまま「DebugTimer.Show」に置き換えて使えます。
  2. 既存の「Debug.WriteLine」をそのまま「DebugTimer.WriteLine」に置き換えて使えます。

どちらの方法で指定しても、各呼び出し間の所要時間を出力ウインドウに表示してくれます。
メッセージボックスを開いてから結果を返すまでの「ユーザーオペレート」の時間が別途測定されるので
操作待ちなのかそうでないのかがはっきりします。
使用例)
IF DebugTimer.Show("×××します。よろしいですか?","xxxの実行",MessageBoxButtons.OKCancel) = DialogResult.OK Then
'処理
DebugTimer.WriteLine("xxx処理終了")
End IF
出力ウインドウへの出力)  ※罫線が出るわけではなく、タブ区切りです。
動作 起動から 前回から 表示テキスト
SHOW 00:00:000 00:00:000 ×××します。よろしいですか?
---- 00:01:000 00:00:968 OK
MEMO 00:03:006 00:02:974 xxx処理終了
動作の種類はShowで呼び出したときは「SHOW」、メッセージボックスの結果には「----」、WriteLineで呼び出したときはデフォルトでは「MEMO」が表示されます。
特に重要なポイントではWriteLineの第二引数を指定することで、別の文字を出力できます。
使用例)
DebugTimer.WriteLine("ここ大事!","ERR!")
出力ウインドウへの出力)  ※罫線が出るわけではなく、タブ区切りです。
ERR! 00:01:000 00:00:000 ここ大事!

コードは長そうに見えますが、MessageBoxのShowのバリエーションをひたすらラップしているだけです(^-^;

Option Strict On
Imports System.Windows.Forms
 
Public Class DebugTimer
 
    Private Shared _start As Date
    Private Shared _before As Date
    Private Shared _timer As New DebugTimer
    Private Shared _result As DialogResult
    Private Sub New()
        _start = Now
        _before = _start
    End Sub
 
    Public ReadOnly Property StartTime() As Date
        Get
            Return _start
        End Get
    End Property
 
    Public Shared Sub WriteLine(ByVal message As String)
        Debug.WriteLine("MEMO" & vbTab _
                        & Format(Date.Parse("2000/1/1").Add(Now().Subtract(_start)), "mm:ss:fff") & vbTab _
                        & Format(Date.Parse("2000/1/1").Add(Now().Subtract(_before)), "mm:ss:fff") & vbTab _
                        & message)
        _before = Now
    End Sub
    Public Shared Sub WriteLine(ByVal message As String, ByVal messagetype As String)
        Debug.WriteLine(messagetype & vbTab _
                        & Format(Date.Parse("2000/1/1").Add(Now().Subtract(_start)), "mm:ss:fff") & vbTab _
                        & Format(Date.Parse("2000/1/1").Add(Now().Subtract(_before)), "mm:ss:fff") & vbTab _
                        & message)
        _before = Now
    End Sub
#Region "Show-ウィンドウ指定なし"
 
    Public Shared Function Show(ByVal text As String) As DialogResult
        WriteLine(text, "SHOW")
        _result = MessageBox.Show(text)
        WriteLine(_result.ToString, "----")
        Return _result
    End Function
 
    Public Shared Function Show(ByVal text As String, _
                                ByVal caption As String) As DialogResult
        WriteLine(text, "SHOW")
        _result = MessageBox.Show(text, caption)
        WriteLine(_result.ToString, "----")
        Return _result
    End Function
 
    Public Shared Function Show(ByVal text As String, _
                                ByVal caption As String, _
                                ByVal buttons As MessageBoxButtons) As DialogResult
        WriteLine(text, "SHOW")
        _result = MessageBox.Show(text, caption, buttons)
        WriteLine(_result.ToString, "----")
        Return _result
    End Function
 
    Public Shared Function Show(ByVal text As String, _
                                ByVal caption As String, _
                                ByVal buttons As MessageBoxButtons, _
                                ByVal icon As MessageBoxIcon) As DialogResult
        WriteLine(text, "SHOW")
        _result = MessageBox.Show(text, caption, buttons, icon)
        WriteLine(_result.ToString, "----")
        Return _result
    End Function
 
    Public Shared Function Show(ByVal text As String, _
                                ByVal caption As String, _
                                ByVal buttons As MessageBoxButtons, _
                                ByVal icon As MessageBoxIcon, _
                                ByVal defaultButton As MessageBoxDefaultButton) As DialogResult
        WriteLine(text, "SHOW")
        _result = MessageBox.Show(text, caption, buttons, icon, defaultButton)
        WriteLine(_result.ToString, "----")
        Return _result
    End Function
 
    Public Shared Function Show(ByVal text As String, _
                                ByVal caption As String, _
                                ByVal buttons As MessageBoxButtons, _
                                ByVal icon As MessageBoxIcon, _
                                ByVal defaultButton As MessageBoxDefaultButton, _
                                ByVal options As MessageBoxOptions) As DialogResult
        WriteLine(text, "SHOW")
        _result = MessageBox.Show(text, caption, buttons, icon, defaultButton, options)
        WriteLine(_result.ToString, "----")
        Return _result
    End Function
#End Region
#Region "Show-ウインドウ指定あり"
    '■
    Public Shared Function Show(ByVal owner As IWin32Window, _
                                ByVal text As String) As DialogResult
        WriteLine(Text, "SHOW")
        _result = MessageBox.Show(owner, Text)
        WriteLine(_result.ToString, "----")
        Return _result
    End Function
 
    Public Shared Function Show(ByVal owner As IWin32Window, _
                                ByVal text As String, _
                                ByVal caption As String) As DialogResult
        WriteLine(text, "SHOW")
        _result = MessageBox.Show(owner, text, caption)
        WriteLine(_result.ToString, "----")
        Return _result
    End Function
 
    Public Shared Function Show(ByVal owner As IWin32Window, _
                                ByVal text As String, _
                                ByVal caption As String, _
                                ByVal buttons As MessageBoxButtons) As DialogResult
        WriteLine(text, "SHOW")
        _result = MessageBox.Show(owner, text, caption, buttons)
        WriteLine(_result.ToString, "----")
        Return _result
    End Function
 
    Public Shared Function Show(ByVal owner As IWin32Window, _
                                ByVal text As String, _
                                ByVal caption As String, _
                                ByVal buttons As MessageBoxButtons, _
                                ByVal icon As MessageBoxIcon) As DialogResult
        WriteLine(Text, "SHOW")
        _result = MessageBox.Show(owner, Text, caption, buttons, icon)
        WriteLine(_result.ToString, "----")
        Return _result
    End Function
 
    Public Shared Function Show(ByVal owner As IWin32Window, _
                            ByVal text As String, _
                            ByVal caption As String, _
                            ByVal buttons As MessageBoxButtons, _
                            ByVal icon As MessageBoxIcon, _
                            ByVal defaultButton As MessageBoxDefaultButton) As DialogResult
        WriteLine(Text, "SHOW")
        _result = MessageBox.Show(owner, Text, caption, buttons, icon, defaultButton)
        WriteLine(_result.ToString, "----")
        Return _result
    End Function
 
    Public Shared Function Show(ByVal owner As IWin32Window, _
                            ByVal text As String, _
                            ByVal caption As String, _
                            ByVal buttons As MessageBoxButtons, _
                            ByVal icon As MessageBoxIcon, _
                            ByVal defaultButton As MessageBoxDefaultButton, _
                            ByVal options As MessageBoxOptions) As DialogResult
        WriteLine(Text, "SHOW")
        _result = MessageBox.Show(owner, Text, caption, buttons, icon, defaultButton, options)
        WriteLine(_result.ToString, "----")
        Return _result
    End Function
#End Region
End Class
 

comment

このページの記述で聞きたいこととか間違ってることとかありましたらコメントを。
名前:
コメント:

すべてのコメントを見る

最終更新:2007年07月24日 08:37