我需要同時向webservice發出多個請求。我想爲每個請求創建一個線程。這可以在ASP.NET v3.5中完成嗎?ASP.NET中使用線程的多個併發web服務請求
例子:
for(int i = 0; i<=10; i++)
{
"Do each Request in a separate thread..."
}
我需要同時向webservice發出多個請求。我想爲每個請求創建一個線程。這可以在ASP.NET v3.5中完成嗎?ASP.NET中使用線程的多個併發web服務請求
例子:
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.
您也可以下載Reactive Extensions反向移植3.5,然後用Parallel.For
做同樣的事情。
雖然oportunities你可以用什麼取決於你想在你的代碼中使用paralelism什麼,在哪裏發生變化。我建議你從.NET 4.0開始使用新的Task類。 示例如下:
Task backgroundProcess = new Task(() =>
{
service.CallMethod();
});
這會讓你開始。之後,我建議你做一些閱讀,因爲這是一個非常廣泛的主題。嘗試此鏈接:
如果Web服務調用是異步的我看不出有多個線程將一事無成。
在.NET 3.5中,您可以使用ThreadPool QueueUserWorkItem方法。網上有很多例子。
-1您的問題並未表明任何研究工作。 –
你能更具體一點嗎?如果這與將數據從服務器發送到數據庫有關,那麼可以激發多個Web服務 – aggietech
可能最值得問的問題是,「我真的需要使用此多線程嗎?」 –