백그라운드에서 URL에서 서버로 파일을 다운로드 할 수있는 방법이 있습니까? 양식이 제출되면 파일 업로드가 백그라운드에서 자동으로 처리되므로 사용자는 파일 업로드를 기다릴 필요가 없습니다.백그라운드에서 ASP.NET 처리
Windows 응용 프로그램에는 BackgroundWorker 클래스가 있습니다. 그러나 ASP.NET은 어떻습니까?
백그라운드에서 URL에서 서버로 파일을 다운로드 할 수있는 방법이 있습니까? 양식이 제출되면 파일 업로드가 백그라운드에서 자동으로 처리되므로 사용자는 파일 업로드를 기다릴 필요가 없습니다.백그라운드에서 ASP.NET 처리
Windows 응용 프로그램에는 BackgroundWorker 클래스가 있습니다. 그러나 ASP.NET은 어떻습니까?
이것은 응답 스레드에서 실행하고 싶은 일이 아닙니다. 파일을 다운로드하고 처리 할 때까지 사용자에게 응답을 지연시키기 때문입니다. 이러한 항목을 수행 할 컴퓨터 (또는 Azure Worker Role)의 서비스로 실행되는 다른 스레드에 더 적합합니다.
그러나 실제로 IIS/ASP.net을 통해 실행하려면 (또는 실행해야하는 경우) 사용자에게 아무것도 반환하지 않으려면 모든 스레드를 다른 스레드에서 실행하거나 비동기 적으로 호출 된 대리자를 통해. 대리자를 비동기 적으로 실행하는 예제는 this answer (인용문)을 참조하십시오.
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를 참조하십시오.
을 참조하십시오. 또한 미리 알림으로 사용할 수있는 컨텍스트 인스턴스가 없으므로 객체 또는 해당 속성 값은 스레드 시작 매개 변수와 함께 전달되어야합니다. 여기에는 HttpContext.Current가 포함되며 세션, 요청, 응답, 응용 프로그램 등이 포함됩니다. – ps2goat
그렇게해서는 안됩니다. IIS는 언제든지 ASP.Net AppDomains를 언로드 할 수 있습니다. 별도의 프로세스를 사용하십시오. – SLaks
이 스레드는 문제와 해결책에 대한 좋은 요약을 제공해야한다고 생각합니다. http://stackoverflow.com/q/12319642/1236044 – jbl
백그라운드 스레드는 asp.net에서 문제가 있습니다. Azure에서는 웹 작업을 사용할 수 있습니다. http://curah.microsoft.com/52143/using-the-webjobs-feature-of-windows-azure-web-sites – RickAndMSFT