我在等待来自外部程序的响应时,如何在一段代码中锁定我的应用程序时遇到问题
我在表达式中带有Synclock
对象的代码段上使用了Me
。在这个Synclock
中,我调用了一个对话框的重写ShowDialog
方法,该方法具有超时参数,但是一旦设置了计时器,它就会从基础ShowDialog
函数调用返回值。像这样工作。
SyncLock Me
Dim frmDlgWithTimeout As New frmDlgWithTimeout ' dialog box with overridden ShowDialog '
Dim res As DialogResult = frmDlgWithTimeout.ShowDialog(10 * 1000) ' 10 sec timeout '
End SyncLock
现在,外部程序可能会引发将我的应用程序带到此Synclock
的事件,但它并不会阻止它进入它,即使ShowDialog
函数没有返回值(因此我认为会阻止代码段锁定。
在程序中只有一个用于锁定的对象实例。
非常感谢您的帮助。
答案 0 :(得分:0)
我个人不使用VB.NET的同步锁定功能,因为我发现它很挑剔。我喜欢创建一个表单范围布尔说:
dim lock as boolean = false
然后我将此布尔值用作我的同步锁定,如下例所示。
Sub LockUntilShowDialogOkSelected()
If Not lock Then
lock = True
Dim frmDlgWithTimeout As SaveFileDialog ' dialog box with overridden ShowDialog '
If frmDlgWithTimeout.ShowDialog = Windows.Forms.DialogResult.OK Then
lock = False
End If
End If
End Sub