웹 서비스에 동시에 여러 요청을해야합니다. 각 요청에 대한 스레드를 만드는 생각. ASP.NET v3.5에서이 작업을 수행 할 수 있습니까?ASP.NET에서 스레드를 사용하는 여러 동시 웹 서비스 요청
예 :
for(int i = 0; i<=10; i++)
{
"Do each Request in a separate thread..."
}
웹 서비스에 동시에 여러 요청을해야합니다. 각 요청에 대한 스레드를 만드는 생각. ASP.NET v3.5에서이 작업을 수행 할 수 있습니까?ASP.NET에서 스레드를 사용하는 여러 동시 웹 서비스 요청
예 :
for(int i = 0; i<=10; i++)
{
"Do each Request in a separate thread..."
}
다음 패턴을 사용하여 ThreadPool
의 작업 항목으로 여러 요청을 스핀 오프 할 수 있습니다. 또한 진행하기 전에 모든 작업 항목이 완료 될 때까지 기다립니다.
int pending = requests.Count;
var finished = new ManualResetEvent(false);
foreach (Request request in requests)
{
Request capture = request; // Required to close over the loop variable correctly.
ThreadPool.QueueUserWorkItem(
(state) =>
{
try
{
ProcessRequest(capture);
}
finally
{
if (Interlocked.Decrement(ref pending) == 0)
{
finished.Set(); // Signal completion of all work items.
}
}
}, null);
}
finished.WaitOne(); // Wait for all work items to complete.
당신은 또한 같은 일을 Parallel.For
를 사용하여 다음 3.5의 Reactive Extensions 백 포트를 다운로드 할 수 있습니다.
사용할 수있는 무엇에 oportunities이 코드에서 paralelism를 사용하고자하는 무엇 곳의 따라 다를 수 있지만. .NET 4.0의 새로운 Task 클래스를 사용하여 시작하는 것이 좋습니다. 예 :
Task backgroundProcess = new Task(() =>
{
service.CallMethod();
});
이렇게하면 시작할 수 있습니다. 그 후에 나는 이것이 매우 광범위한 주제이기 때문에 당신이 약간의 독서를하기를 제안합니다. 이 링크를 시도하십시오 :
를 웹 서비스 호출이 비동기 경우 난 아무것도 성취 할 여러 스레드가 표시되지 않습니다.
.NET 3.5에서는 ThreadPool QueueUserWorkItem 메서드를 사용할 수 있습니다. 웹상에 많은 예제가 있습니다.
-1 귀하의 질문은 연구 노력을 나타내지 않습니다. –
좀 더 구체적으로 알려주시겠습니까? 이것이 서버에서 db로 데이터를 전송하는 것과 관련이 있다면, 여러 웹 서비스를 실행할 수 있습니다. – aggietech
아마도 가장 좋은 질문은 "이것을 정말로 멀티 스레드로 만들어야합니까?"입니다. –