targetFramework = "4.5"에서 targated 된 MVC 4.0 응용 프로그램이 있습니다.비동기 컨트롤러에서 비동기가 작동하지 않습니다. mvc 4.0
기본적으로 파일 처리의 기존 기능을 동기식에서 비동기식으로 변환해야합니다 (대용량 파일 사용자는 다른 작업을 기다릴 필요가 없습니다).
내 코드
[HttpPost]
public async Task<ActionResult> FileUpload(HttpPostedFileBase fileUpload)
{
Coreservice objVDS = new Coreservice();
//validate the contents of the file
model =objVDS. ValidateFileContents(fileUpload);
// if file is valid start processing asynchronously
await Task.Factory.StartNew(() => { objVDS.ProcessValidFile(model); }, CancellationToken.None,
TaskCreationOptions.DenyChildAttach,
TaskScheduler.FromCurrentSynchronizationContext());
return view();
}
은 기본적으로 내가 데이터베이스 작업 (diffrent 프로젝트)를 수행 서비스에있는 비동기 메소드를 호출 할 수 있습니다.
비동기 프로세스가 서비스 메소드의 컨텍스트에 액세스하기를 원합니다. 그 이유는 무엇입니까 TaskScheduler.FromCurrentSynchronizationContext()
Task.Factory.StartNew()
에 사용하고 있습니다.
서비스 방법은 파일 유형에 따라하는 다음과 같이하고, 두 번째 서비스는
public async task ProcessValidFile(fileProcessDataModel model)
{
employeeWorkedDataservice service =new employeeWorkedDataservice()
await Task.Factory.StartNew(() =>
{
service .ProcessEmployeeDataFile(model.DataSetToProcess, OriginalFileName, this, model.Source);
},
CancellationToken.None,
TaskCreationOptions.DenyChildAttach,
TaskScheduler.FromCurrentSynchronizationContext());
}
ProcessEmployeeDataFile
반환 무효하고 있지 비동기 방식 데이터 작업을 요구 받고있다. 위의 코드를 실행하면 데이터 처리가 완료 될 때까지 컨트롤러로 돌아 가지 않습니다. 나는 여기서 뭔가를 놓치고 있다고 생각한다. 나를 안내하십시오. 어떻게 await
작품을 오해 것 같은
덕분에, 아몰
이미 https://msdn.microsoft.com/en-us/library/hh191443.aspx를 읽은 것으로 간주합니까? – Nzall
예; 내가 놓친 게 있니? – amol