如何在vc中停止正在进行的上传

Posted

技术标签:

【中文标题】如何在vc中停止正在进行的上传【英文标题】:How to stop an ongoing upload in vc 【发布时间】:2013-07-11 05:59:26 【问题描述】:

在我的应用程序中,我们可以将上传文件上传到服务器。为此,我正在使用 WININET。当用户单击Stop 按钮时,我想停止上传过程。现在,如果用户单击stop 按钮,正在进行的过程将不会停止上传。如何拒绝上传文件。

【问题讨论】:

您需要向我们展示一些代码。你在调用什么函数?它有异步模式吗?另外,在部分上传的情况下会发生什么?服务器是否知道将文件视为无效文件?您是否需要编写处理删除部分文件的代码? 【参考方案1】:

如果您使用的是 WININET,则需要将文件分成几个较小的块发布。如果用户按下“取消”,则需要设置一个变量来中止上传。这必须在每次小上传后检查... 可以在此处找到将上传拆分为较小 ppart 的完整示例: http://support.microsoft.com/kb/177188/en-us 您需要下载“hsrex.exe”文件,然后使用 WinZip 或 7-zip 打开它并解压缩“BigPost.cpp”文件。如果你愿意,我也可以在这里发布代码......

【讨论】:

【参考方案2】:

试试 CHttpFile::EndRequest() 函数...

另一个想法,尝试终止为上传操作工作的线程

【讨论】:

【参考方案3】:

首先,您需要在工作线程上执行 WinInet 操作,以便释放 UI 以获取“取消”按钮单击。当用户单击取消时,您的 UI 线程应关闭 WinInet 用于上传文件块的句柄。这会导致 WinInet 立即中止当前正在进行的任何上传块。要在此时干净地退出工作线程,UI 线程应该设置工作线程读取的 bool 'done' 标志,如果设置了,工作线程退出而不是循环上传另一个块。

【讨论】:

以上是关于如何在vc中停止正在进行的上传的主要内容,如果未能解决你的问题,请参考以下文章

如何在覆盖 UIView 之前停止幻灯片过渡到 Second VC?

当我的不和谐机器人在 VC 中时,如何防止我的终端停止

如何停止将 .apk 上传到 BitBucket/Github?

使用 rhandsontable 时如何停止 hot_to_r 在下载时添加列

如何在 VC++ 中禁用 Windows TCP/IP 堆栈 [以编程方式]

如何停止部署到正在进行的 Heroku