2012-08-27 84 views
0

我想在一個單獨的線程中執行HttpWebRequest後臺線程中的HttpWebRequest

比如我有:

public string GetPage(string url) 
{ 
    string html = new WebClient().DownloadString(url); 
    return html; 
} 

如何我會在一個單獨的線程中運行這個,沒有什麼麻煩?

我試過開始一個簡單的線程,但我不知道如何返回HTML。

+0

你不能「迴歸」的結果不阻塞當前線程;這真的有點擊敗另一個線程的目的。 –

+0

你在做什麼的結果?任何理由不能把它放在後臺線程上? – BAF

回答

1

要做到這一點 「沒有什麼麻煩」,使用C#5.0

public async void DoWork(string url) 
{ 
    string page = await new WebClient().DownloadStringTaskAsync(url); 
    //Caller thread will not be blocked but you will be able to 
    //continue your work at this point after BG thread 
    //(executing "DownloadStringTaskAsync") has downloaded the page 

} 
+0

好的,謝謝你的回答。但是,我怎樣才能獲得回報價值? –

+0

如何使用ref或out參數? – dalexsoto

+0

參考/輸出參數在這裏沒有幫助。抓取將在後臺進行,您的代碼將繼續。對後臺線程的返回值做任何你需要做的處理。 – BAF

0

「沒有什麼麻煩」 的可能性不大......

選項:

  • 降導致成某種同步收集(即ConcurentQueue)以建立某種消費者/生產者配對(將該收集作爲參數傳遞給您的呼叫)
  • pass som Ë排序回調將被稱爲「準備數據」當數據有(類似DownloadStringCompleted
  • 只是處理數據對新的線程,並提交結果,無論你需要