0

有没有办法在后台将文件从 URL 下载到服务器?提交表单时,后台自动处理文件上传,用户无需等待文件上传。

在 Windows 应用程序中,有 BackgroundWorker 类。但是 ASP.NET 怎么样?

4

1 回答 1

2

这不是您希望在响应线程上运行的那种事情,因为它会延迟对用户的响应,直到可以下载和处理文件为止。它更适合在计算机(或 Azure 工作角色)上作为服务运行的不同线程,该线程将为您执行这些项目。

但是,如果您真的想要(或必须)通过 IIS/ASP.net 运行它,并且如果您不关心向用户返回任何内容,则可以在不同的线程中或通过调用的委托运行所有逻辑异步。有关异步运行委托的示例,请参阅此答案(从那里引用)。

private delegate void DoStuff(); //delegate for the action

protected void Button1_Click(object sender, EventArgs e)
{
    //create the delegate
    DoStuff myAction = new DoStuff(DownloadStuff); 

    //invoke it asynchronously, control passes to next statement
    myAction.BeginInvoke(null, null);
}

private void DownloadStuff() { 
  // your functionality here - this can also go in a code library
}

有关如何使用委托(包括使用参数传递信息)的更多信息,请参阅MSDN 。

于 2013-08-21T14:20:47.857 回答