2014-12-16 2 views
0

단일 요청에서 6 가지 매우 느린 메서드를 호출하는 ASP.NET 응용 프로그램이 있습니다. 이 메서드는 비동기 적이 지 않으며 다시 작성하고 테스트 할 시간이 없습니다. 6 스레드에서 6 가지 방법을 실행 한 다음 결과를 집계하려면 어떻게합니까? 나는 .NET 4.5에있다.ASP.NET 응용 프로그램에서 여러 스레드에서 메서드를 실행하십시오.

+1

문제 해결을 위해 저희에게 요청하지 마십시오. 문제를 직접 해결하려고 시도한 후 왜 결과가 정확한지를 보여주고 작동하지 않는 이유를 설명해주십시오. 당신이 꼭 알아야 할 훌륭한 기사는 "[당신은 무엇을 했습니까?] (http://whathaveyoutried.com/)"를보십시오. –

+0

[QueueBackgroundWorkItem] (http://blogs.msdn.com/b/webdev/archive/2014/06/04/queuebackgroundworkitem-to-reliably-schedule-and-run-long-background-process-lements.aspx)을 살펴보십시오. in-asp-net.aspx). [SignalR] (http://www.asp.net/signalr)과 함께 사용하여 백그라운드 작업을 실행할 수 있습니다. – Romoku

답변

2

Task.Run을 사용하여 다른 스레드의 각 메서드를 실행하는 작업을 만든 다음 모든 스레드가 완료 될 때까지 기다렸다가 결과를 사용할 수 있습니다.

var tasks = new Task<YourResultType>[] 
{ 
    Task.Run(() => Method1()), 
    Task.Run(() => Method2()), 
    Task.Run(() => Method3()), 
    Task.Run(() => Method4()), 
    Task.Run(() => Method5()), 
    Task.Run(() => Method6()), 
}; 

var results = Task.WhenAll(tasks).Result; 

방법은 모든 당신이 배열로 모든 작업을 넣을 수 있도록, 동일한 유형의 결과가없는 경우에, 당신은 각 작업에 대해 별도의 지역 변수를 가지고에 Result를 사용해야합니다 그들 모두를 시작한 후에 각각 하나씩.

관련 문제