-
Notifications
You must be signed in to change notification settings - Fork 1
/
DebugWatch.vb
154 lines (111 loc) · 4.1 KB
/
DebugWatch.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
Option Explicit On
''' <summary>
''' 時間計測用のストップウォッチの機能を提供します
''' </summary>
''' <remarks>
''' 時間計測用のストップウォッチです(デバッグ用)
''' 基本的にはConditional("DEBUG")によってリリース時はコンパイルされないため、処理速度に影響しません。
''' ※このクラスを使用する時はStartTimeメソッドを呼び出してから使用すること
''' </remarks>
Public Class DebugWatch
#Region "変数"
''' <summary>時間計測用のメソッドとプロパティを提供するクラス</summary>
Private sw As New System.Diagnostics.Stopwatch
''' <summary>時間計測用のストップウォッチ</summary>
Private Shared _DebugWatch As DebugWatch
#End Region
#Region "コンストラクタ"
''' <summary>
''' コンストラクタ
''' </summary>
''' <remarks>
''' 引数無しは外部に公開しない
''' </remarks>
Private Sub New()
End Sub
#End Region
#Region "プロパティ"
''' <summary>
''' ストップウォッチ情報を返却します
''' </summary>
''' <remarks>
''' デバック用クラスですが、どこでも使用される可能性があるので
''' 自分以外には設定させ無い目的があります。
''' ※デザインパターンのSingletonパターンです。
''' </remarks>
Public Shared ReadOnly Property Instance() As DebugWatch
Get
'インスタンスが作成されてなかったらインスタンスを作成
If _DebugWatch Is Nothing Then _DebugWatch = New DebugWatch
Return _DebugWatch
End Get
End Property
#End Region
#Region "メソッド"
'Conditional属性は引数の定義の時のみ実行される。
'定義のシンボルが無い場合はコンパイル対象外となるため
'コンパイル後のサイズや挙動に影響を及ぼさない。
''' <summary>
''' ストップウォッチ開始
''' </summary>
''' <remarks></remarks>
<Conditional("DEBUG")> _
Public Sub StartTime()
Me.sw.Start()
End Sub
''' <summary>
''' ストップウォッチの停止
''' </summary>
''' <remarks></remarks>
<Conditional("DEBUG")> _
Public Sub StopTime()
Me.sw.Stop()
End Sub
''' <summary>
''' ストップウォッチのリセット
''' </summary>
''' <remarks></remarks>
<Conditional("DEBUG")> _
Public Sub ResetTime()
Me.sw.Reset()
End Sub
''' <summary>
''' 経過時間間隔を取得する
''' </summary>
''' <returns>時間間隔</returns>
''' <remarks>
''' インスタンスが作成されてからの時間間隔を返す
''' </remarks>
Private Function PutTime() As TimeSpan
Return Me.sw.Elapsed()
End Function
''' <summary>
''' 経過時間を出力ウインドウに出力
''' </summary>
''' <remarks></remarks>
<Conditional("DEBUG")> _
Public Sub DebugPrintTime(ByVal putMessage As String)
Debug.Print(putMessage & ": " & Me.PutTime.ToString())
End Sub
''' <summary>
''' 経過時間をメッセージボックスで表示
''' </summary>
''' <remarks></remarks>
<Conditional("DEBUG")> _
Public Sub DebugPrintTimeToMessegeBox(ByVal putMessage As String)
MessageBox.Show(putMessage & ": " & Me.PutTime.ToString(), "経過時間", MessageBoxButtons.OK, MessageBoxIcon.Information)
End Sub
''' <summary>
''' 経過時間をMessenger風通知メッセージで表示
''' </summary>
''' <remarks></remarks>
<Conditional("DEBUG")> _
Public Sub DebugPrintTimeToPopupMessage(ByVal pTitle As String, ByVal pPutMessage As String)
'表示するメッセージを作成
Dim mMessage As String = pPutMessage & Environment.NewLine & Me.PutTime.ToString()
'Messenger風通知メッセージを表示
Dim mPopupMessage As New frmPopupMessage(pTitle, mMessage)
mPopupMessage.Show()
End Sub
#End Region
End Class