在 HttpWebRequest 文件发布时赢得表单应用程序冻结
Posted
技术标签:
【中文标题】在 HttpWebRequest 文件发布时赢得表单应用程序冻结【英文标题】:Win form application freeze on HttpWebRequest file post 【发布时间】:2011-04-07 21:01:59 【问题描述】:我有一个应用程序,它将使用 HttpWebRequest 将文件从我的客户端上传到 Web 服务器(此处建议的功能:Upload files with HTTPWebrequest (multipart/form-data))
我的问题是,当文件(大约 10 mb 大小)被发布时,整个应用程序冻结(例如,当我尝试移动窗口时“应用程序没有响应”)。
我需要将上传放在单独的线程中,还是有其他简单的方法可以解决这个问题?
【问题讨论】:
【参考方案1】:看看BackgroundWorker
类。除非您在单独的线程中运行,否则您的 UI 将在操作进行时冻结。
使用BackgroundWorker
,您可以在DoWork
事件中执行您的代码,UI 将保持响应。
【讨论】:
【参考方案2】:多线程编程是这种情况下要走的路。
您可以为将上传文件的函数创建一个委托,并使用 BeginInvoke 在单独的线程中执行该函数。
或者您可以简单地使用 Thread 类和内置的 .net ThreadPool 创建一个新线程。
【讨论】:
以上是关于在 HttpWebRequest 文件发布时赢得表单应用程序冻结的主要内容,如果未能解决你的问题,请参考以下文章
httpWebRequest.GetResponse() 基础连接已关闭 发送时发生错误
页面重定向时 HttpWebRequest 和 Restsharp 不返回响应
HttpWebRequest在GetResponse时总是超时
使用 HttpWebRequest 通过 PUT 上传文件时出错
HttpWebRequest 在出错时获取response内容
使用 HttpWebRequest,将文件上传到 SharePoint 时,WebResponse 是未编译的 aspx 页面