2009-08-06 4 views

Antwort

45

Der WebClient keine Zeit Eigenschaft hat, jedoch ist es möglich, von der WebClient zu erben Zugang zu geben, auf dem internen WebRequest verwendet Timeout:

public class WebClientEx : WebClient 
{ 
    public int Timeout {get; set;} 

    protected override WebRequest GetWebRequest(Uri address) 
    { 
     var request = base.GetWebRequest(address); 
     request.Timeout = Timeout; 
     return request; 
    } 
} 

Verbrauch:

var myClient = new WebClientEx(); 
myClient.Timeout = 900000 // Daft timeout period 
myClient.UploadData(myUri, myData); 
+1

Große Antwort. FYI Ich habe das verwendet und es funktioniert auch mit 'WebClient.UploadValues ​​()' – AlbatrossCafe

1

Also für diejenigen, die Code in VB ...

Public Class WebClientExtended 
    Inherits WebClient 
    Public Property Timeout() As Integer 
     Get 
      Return m_Timeout 
     End Get 
     Set(value As Integer) 
      m_Timeout = value 
     End Set 
    End Property 
    Private m_Timeout As Integer 

    Protected Overrides Function GetWebRequest(address As Uri) As WebRequest 
     Dim request = MyBase.GetWebRequest(address) 
     request.Timeout = Timeout 
     Return request 
    End Function 
End Class 

Funktion Upload (ByVal URL As String, ByVal FilePath As String, ByVal Filename As String)

'Call API to Upload File 
    Dim myWebClient As New WebClientExtended 
    myWebClient.Timeout = 10 * 60 * 1000 
    Dim responseArray As Byte() 
    Dim responseString As String = "" 

    Try 
     responseArray = myWebClient.UploadFile(URL, FilePath + "/" + FileName) 
     responseString = System.Text.Encoding.ASCII.GetString(responseArray) 
    Catch ex As Exception 
     responseString = "Error: " + ex.Message 
    End Try 

    Return responseString 

End Function 

(Dies ist erst mein zweiter Beitrag)

Verwandte Themen