diff --git a/AutoUpdater.NET/AutoUpdater.cs b/AutoUpdater.NET/AutoUpdater.cs index 480419c5..7f6c2818 100644 --- a/AutoUpdater.NET/AutoUpdater.cs +++ b/AutoUpdater.NET/AutoUpdater.cs @@ -245,6 +245,11 @@ public static class AutoUpdater /// public static Mode UpdateMode; + /// + /// Set the timeout in milliseconds for WebRequest of WebClient, default is 100000ms + /// + public static int Timeout = 100000; + /// /// An event that developers can use to exit the application gracefully. /// @@ -734,7 +739,8 @@ internal static MyWebClient GetWebClient(Uri uri, IAuthentication basicAuthentic { var webClient = new MyWebClient { - CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore) + CachePolicy = new RequestCachePolicy(RequestCacheLevel.NoCacheNoStore), + Timeout = AutoUpdater.Timeout }; if (Proxy != null) diff --git a/AutoUpdater.NET/MyWebClient.cs b/AutoUpdater.NET/MyWebClient.cs index 967d6a4e..95afae1f 100644 --- a/AutoUpdater.NET/MyWebClient.cs +++ b/AutoUpdater.NET/MyWebClient.cs @@ -11,6 +11,11 @@ public class MyWebClient : WebClient /// public Uri ResponseUri; + /// + /// Set Request timeout in milliseconds + /// + public int Timeout; + /// protected override WebResponse GetWebResponse(WebRequest request, IAsyncResult result) { @@ -18,4 +23,12 @@ protected override WebResponse GetWebResponse(WebRequest request, IAsyncResult r ResponseUri = webResponse.ResponseUri; return webResponse; } + + /// + protected override WebRequest GetWebRequest(Uri address) + { + WebRequest webRequest = base.GetWebRequest(address); + webRequest.Timeout = Timeout; + return webRequest; + } } \ No newline at end of file