俺最近学C#,写了一个文件下载器,可是在下载的过程中程序往往一直卡住,直到下载差不多的时候画面又恢复正常!有何高招呢大家
- C# code
public static string GetHtml(string URL, string cookie, out string header, string server) { HttpWebRequest httpWebRequest; HttpWebResponse webResponse; Stream getStream; StreamReader streamReader; string getString = ""; httpWebRequest = (HttpWebRequest)HttpWebRequest.Create(URL); httpWebRequest.Accept = "*/*"; httpWebRequest.Referer = "http://www.xxxx.com.cn/Index/logincheck"; CookieContainer co = new CookieContainer(); co.SetCookies(new Uri(server), cookie); httpWebRequest.CookieContainer = co; httpWebRequest.UserAgent = "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.04506.648; .NET4.0C; .NET4.0E; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)"; httpWebRequest.Method = "GET"; webResponse = (HttpWebResponse)httpWebRequest.GetResponse(); header = webResponse.Headers.ToString(); getStream = webResponse.GetResponseStream(); streamReader = new StreamReader(getStream, Encoding.UTF8); getString = streamReader.ReadToEnd(); streamReader.Close(); getStream.Close(); return getString; }
这是俺使用的一个方法。。
[解决办法]
把下载进程弄成后台进程,就能解决问题.
但是实际意义不大.
[解决办法]
异步下载 或者将同步下载放在单独线程/线程池
.Begin .End 开头的 是 异步函数 可以参看msdn库
[解决办法]
http://msdn.microsoft.com/zh-cn/library/ms229675(v=vs.80).aspx
说的再多,也没msdn说的全,希望能给你帮助
[解决办法]
同步执行就是这个样子了。
看看这些文章,会有帮助:
C#多线程与UI响应 防界面假死
http://blog.csdn.net/nnsword/article/details/5543464
C#使用委托与多线程,解决界面假死
http://wangheng.org/use-multiple-threads-resolve-interface-feign-death.html