我有一些如下所示的代码,似乎可以根据需要运行。我的问题是 - 是否有必要建立webservice.close?这将超出子结束范围。我问的主要原因是wsClient最终获得了代码警告,
变量' wsClient'在被赋值之前使用。在运行时可能会产生空引用异常。
最好的结果可能是重组并保持.close并摆脱警告。
Dim wsClient As wsGates.ConsoleClient
Try
wsClient = New wsGates.ConsoleClient
Dim wsRet As wsGates.clsReturn
wsRet = wsClient.Phase1Validate("15024")
Catch
Finally
If wsClient IsNot Nothing Then wsClient.Close()
End Try
End Sub
答案 0 :(得分:1)
如果您不关闭它,底层频道可能会保持打开状态。虽然当对象是GC或您的应用程序退出时最终可能会关闭,但最好关闭它以尽快释放资源。
我建议使用Try
:
Using
语句
Using wsClient As New wsGates.ConsoleClient
Dim wsRet As wsGates.clsReturn
wsRet = wsClient.Phase1Validate("15024")
End Using
答案 1 :(得分:0)
不需要关闭wsClient,因为它仅限于该方法。在该方法执行后,自动手动销毁对象。