WebAPI ASP.NET 솔루션이 있습니다. (십초 각) 나는 3 개 작업의 결과를 얻을 필요가 전화에서작업 대기 중일 때 IIS가 실패 함
<add key="aspnet:UseTaskFriendlySynchronizationContext" value="true" />
:
Task<Cat> catAsync = GetCatAsync();
Task<Dog> dogAsync = GetDogAsync();
Task<Pig> pigAsync = GetPigAsync();
await Task.WhenAll(catAsync , dogAsync , pigAsync);
cat= catAsync.Result;
dog= dogAsync.Result;
pig= pigAsync.Result;
내가 한 번 호출 할 수 있지만, 후속 호출을 내가 가진의 Web.config 설정 이것에 스레드에서 죽는 것, 고양이와 개가 실행될 수 있지만 돼지는 기화하는 것 같습니다.
The thread '<No Name>' (0x2f60) has exited with code 0 (0x0).
The thread '<No Name>' (0x974) has exited with code 0 (0x0).
The thread '<No Name>' (0x1ea8) has exited with code 0 (0x0).
내 작업은 다음과 같이 : 분 정도 후에 이러한 표시 시작
private async Task<Cat> CatAsync()
{
await Task.Run(() =>
{
//Use WCF to get some data from a service
});
return cat;
}
이의 나를 다시 한 번 사이트 운영을 할 수 iisreset을 실행합니다.
* 편집
은 그 아래의 솔루션이 작업이 장시간 실행이 경우, IIS는 모든 스레드를 죽이고 요청을 종료 할 수 있습니다 파나지오티스 Kanavos에 의해
나는 당신의 제목을 편집했습니다. "[제목에"태그 "가 포함되어 있어야합니까?] (http://meta.stackexchange.com/questions/19190/)"합의가 "아니오, 그렇지 않아야합니다"로 표시되어야합니다. –
"스레드 X가 코드 0 (0x0)으로 종료되었습니다."메시지는 오류가 아닙니다. 정확히 무슨 일이 일어 났습니까? 예외가 있습니까? 코드 실행이 중지되면 어디에서 멈 춥니 까? – svick
호출 코드는 어떻게 생겼는가? 당신의 메소드를 호출 할 때'Wait' 또는'Result'를 사용합니까? –