【发布时间】:2017-10-01 13:57:04
【问题描述】:
我无法构建 exe:
1> ------ 组装开始:项目:B,配置:调试任何 CPU
B.vb (38.9): error BC36595: 该方法不能同时包含 “On Error Resume Next”语句并定义使用的变量 在 lambda 表达式或查询表达式中。
组装:成功:0,错误:1,无变化:0,跳过:0
从第 37 行到第 48 行:
Sub Read(ByVal ar As IAsyncResult)
On Error Resume Next
If TCP.GetStream.DataAvailable And TCP.GetStream.CanRead Then
Dim tt As New Thread(AddressOf Data) : tt.IsBackground = True : tt.SetApartmentState(ApartmentState.STA) : tt.Start(DirectCast(bf.Deserialize(TCP.GetStream), Byte()))
TCP.GetStream.Flush() : TCP.GetStream.BeginRead(New Byte() {0}, 0, 0, AddressOf Read, Nothing)
Exit Sub
Else
GoTo r
End If
r:
Disconnect()
End Sub
我正在尝试使用 try\catch,但不知道是否正确? :
Sub Read(ByVal ar As IAsyncResult)
Try
If TCP.GetStream.DataAvailable And TCP.GetStream.CanRead Then
Dim tt As New Thread(AddressOf Data) : tt.IsBackground = True : tt.SetApartmentState(ApartmentState.STA) : tt.Start(DirectCast(bf.Deserialize(TCP.GetStream), Byte()))
TCP.GetStream.Flush() : TCP.GetStream.BeginRead(New Byte() {0}, 0, 0, AddressOf Read, Nothing)
Exit Sub
End If
Catch
GoTo r
Finally
End Try
r:
Disconnect()
End Sub
【问题讨论】:
-
这是 VB.NET 而不是 C#
-
顺便说一句。 On Error Resume Next 应尽快丢弃。使用提供的 NET Structured exception handling (Try/Catch/Finally)
-
我不明白这么多人一直把 VB.NET 误认为是 C#...
-
您是否考虑过错误消息的含义,即您不能使用
On Error Resume Next并定义在 lambda 表达式或查询表达式中使用的变量的可能性?我建议您采纳@Steve 的建议并使用 Try/Catch/Finally 块而不是On Error。 -
是的,谢谢,我会尝试 try\catch 并编辑问题
标签: .net vb.net compiler-errors