在 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 页面