.net WebClient不支持并发I/O异常

.net WebClient不支持并发I/O异常,.net,vb.net,web-services,webclient,.net,Vb.net,Web Services,Webclient,我在别人的代码中工作,我试图尽可能多地理解它,因此我将尽可能提供相关和充分的信息。如果这里没有足够的细节,请询问,我将尝试用它更新我的问题 因此,在程序启动时,将创建一个实例: Public Class ServiceProvider Private ReadOnly serviceClient As IServiceClient Public Sub New(Optional adress As String = Nothing) Me.New(New Service

我在别人的代码中工作,我试图尽可能多地理解它,因此我将尽可能提供相关和充分的信息。如果这里没有足够的细节,请询问,我将尝试用它更新我的问题

因此,在程序启动时,将创建一个实例:

Public Class ServiceProvider
   Private ReadOnly serviceClient As IServiceClient

   Public Sub New(Optional adress As String = Nothing)
      Me.New(New ServiceClient(adress))
   End Sub
   Public Sub New(serviceClient As IServiceClient)
      Me.serviceClient = serviceClient
   End Sub
然后事情发生了,我来到这里(在这里调用/发送和接收数据:

Public Function ExecuteSp(spConfig As String) As ExecuteSpResult
    Dim result As ExecuteSpResult = serviceClient.PostData(Of ExecuteSpResult)("executesp", spConfig)
End Function
以及生成实例的类中的
PostData
函数:

Public Class ServiceClient
   Public Function PostData(Of T)(address As String, data As Byte()) As T
        SetHeaders("application/octet-stream") 'sets credentials and stuff to the webClient
      Try
          Dim serviceResult As Byte() = webClient.UploadData(address, data)
          Dim result As T = Deserialize(Of T)(serviceResult)
          Return result
      Catch ex As Exception
          Throw ex
      End Try
   End Function
WebClient不支持并发I/O异常
发生在
WebClient.UploadData(…)

因此,我四处搜索,发现当客户端的单个实例仅用于所有操作时会发生这种情况。因此,我对上面提到的前2个函数做了如下操作:

Public Class ServiceProvider
   Private ReadOnly serviceClient As IServiceClient
   Private main_address As String = Nothing

   Public Sub New(Optional adress As String = Nothing)
      Me.New(New ServiceClient(adress))
      If main_address Is Nothing Then
          main_address = adress
      End If
   End Sub

   Public Function ExecuteSp(spConfig As String) As ExecuteSpResult
      Using client As ServiceClient = New ServiceClient(main_address)
         Dim result As ExecuteSpResult = serviceClient.PostData(Of ExecuteSpResult)("executesp", spConfig)
         Return result
      End Using
   End Function
假设每次都会使用
webClient
的不同实例,对吗?我还是会遇到异常,不知道该怎么办

更新:

这是在
ServiceClient
中初始化
webClient
的方式:

Private WithEvents webClient As WebClient

Public Sub New()
    Me.New(Config.DefaultServiceAddress)
End Sub

Public Sub New(baseAddress As String)
    webClient = New WebClient()
    webClient.BaseAddress = baseAddress
    webClient.Encoding = System.Text.Encoding.UTF8
End Sub

ServiceClient
中的
webClient
在何处/如何声明?@Mark,我更新了我的帖子: