使用Thread在背景上上传图像

时间:2013-03-11 09:21:45

标签: c# asp.net .net multithreading

我的网站上有一个上传表单,允许用户插入一些项目(通常是树木),他们可以选择上传图片 后添加这些项目。 上传图片需要15秒钟,但我希望让用户在等待图片上传时添加另一项。 所以我想使用线程,因为: 上传完成后,页面将刷新,表单将重置,因此他们必须等待,如果他们想要添加其他项目,它将完成上传。

我试过这段代码:

  protected void UploadFile(Object s, EventArgs e)
        {
    Thread t = new Thread(delegate()
    {
      //code for upload the image
    )};
    t.Start();
}

但它不起作用,甚至现在都没有上传文件。 有人知道原因吗? 感谢。

3 个答案:

答案 0 :(得分:2)

只有在收到完整的请求后才会调用您的服务器端代码 因此,使用一个线程将无济于事。

如果您希望在上传过程中保持页面交互,您应该寻找基于ajax的解决方案。

一个非常简单的选项是uploadify。您可以将其连接到HttpHandler,并在应用程序保持交互的同时在后台进行上传。

答案 1 :(得分:1)

上传文件所需的时间不在处理中 - 您可能只是将文件保存在某处 - 这是通过网络传输文件。

所以我建议不要尝试在这里进行后台处理,只需按正常方式处理它,它就会同样高效。用户只需要等到图像通过网络发送。

如果用户在上传图片时需要添加其他项目,您可以随时让您的网站在浏览器的标签/窗口中打开另一个页面。

答案 2 :(得分:0)

也许您可以查看HTML5 can do for you在向用户提供更多反馈信息方面的内容。像罗伊指出的那样,传输时间非常重要,用户无论如何都要等待。但是使用HTML5,您可以提供一些不错的进度条来改善上传页面的用户体验。

希望这有帮助。