タップするとonTouchEventが発動するわけだけど
その時起動するのがダイアログだろ?
そのダイアログを一回目ならNewで作成だけど、
すでにあるならすでにあるのを使うんだよ。
常に一つしか起動してほしくない二重起動みたいのは皆これ。

Class dialog
Private _dialog As dialog

Public ShowDialog() As dialog
If _dialog Is Nothing Then
_dialog = New dialog
End If

Return _dialog
End Class


Class sonota
Sub OnTouchEvent
dialog.ShowDialog()
End Sub
End Class


まぁ、ダイアログが生まれた時に
タップを無効化させるってのもできるからどっちでもいいよ。
ダイアログが生まれたタイミングでタップのあるクラスの方へ
フラグを立てればいいだけだろう。