我開始在Silverlight中開發一個應用程序,用於下載網站的HTML並解析它。藉助Silverlight 4,只需請求提升的權限即可輕鬆實現。但是,使用Silverlight 3時,獲取網站HTML的唯一方法是通過WebService調用。我最初的想法是做到以下幾點:在WebService中調用WebClient
public class Service1
{
[OperationContract]
public void GetHtml()
{
Uri targetUri = new Uri("http://www.google.com", UriKind.RelativeOrAbsolute);
WebClient webClient = new WebClient();
webClient.DownloadStringCompleted += this.WebClient_DownloadStringCompleted;
webClient.DownloadStringAsync(targetUri);
}
private void WebClient_DownloadStringCompleted(object sender, DownloadStringCompletedEventArgs e)
{
}
}
但是,我意識到,只要我打這個電話,這是異步還有,從我的Silverlight應用程序,也沒有辦法,我檢索HTML的網站。這就是爲什麼我更改爲以下:
public class Service1
{
[OperationContract]
public string GetHtml()
{
Uri targetUri = new Uri("http://www.google.com", UriKind.RelativeOrAbsolute);
WebClient webClient = new WebClient();
return webClient.DownloadString(targetUri);
}
}
我相信最後一種方法是不是罰款,因爲它會凍結線程。所以,我的問題,有沒有辦法實現第一種方法也叫異步調用異步調用:)。任何幫助將不勝感激。
最好的問候, 基里爾·
我不確定我是否理解這個問題。代碼的第二個版本只會凍結服務器上的線程。當SL - >服務呼叫正在進行時,您的客戶端應用程序將保持「解凍」狀態。 – 2010-03-29 07:49:00
這就是我想要避免的 - 凍結服務器。如果我使用DownloadStringAsync進行WebClient調用,服務器將不會被凍結,但是如何獲取在DownloadStringCompleted事件處理程序中返回的數據? – 2010-03-29 08:05:09
啊,對不起。我誤解了你的問題。 – 2010-03-29 09:22:33