WCF服務(wù)異步調(diào)用不同實(shí)現(xiàn)方式講解
我們?cè)谑褂?a >WCF服務(wù)調(diào)用的時(shí)候,可以使用多種方法來(lái)實(shí)現(xiàn),比如今天為大家介紹的是在SilverLight下使用WebRequest來(lái)對(duì)WCF服務(wù)進(jìn)行異步調(diào)用。那么,就讓我們一起來(lái)看看WCF服務(wù)異步調(diào)用的相關(guān)內(nèi)容。
UI線程如果被阻塞的話,是不能得到異步響應(yīng)結(jié)果的。關(guān)于這個(gè)問(wèn)題,有一個(gè)簡(jiǎn)單的通過(guò)WebRequest來(lái)進(jìn)行WCF服務(wù)異步調(diào)用的示例如下
- view plaincopy to clipboardprint?
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- Uri endpoint = new Uri(urlstr);
- WebRequest request = WebRequest.Create(endpoint);
- request.BeginGetResponse(new AsyncCallback(ResponseReady), request);
- //“simulated” sync call : do something here to get response
- }
- void ResponseReady(IAsyncResult asyncResult)
- {
- WebRequest request = asyncResult.AsyncState as WebRequest;
- WebResponse response = request.EndGetResponse(asyncResult);
- using (Stream responseresponseStream = response.GetResponseStream())
- {
- StreamReader readStream = new StreamReader(responseStream,
Encoding.UTF8);- string response = readStream.ReadToEnd();
- }
- }
- private void Button_Click(object sender, RoutedEventArgs e)
- {
- Uri endpoint = new Uri(urlstr);
- WebRequest request = WebRequest.Create(endpoint);
- request.BeginGetResponse(new AsyncCallback(ResponseReady), request);
- //“simulated” sync call : do something here to get response
- }
- void ResponseReady(IAsyncResult asyncResult)
- {
- WebRequest request = asyncResult.AsyncState as WebRequest;
- WebResponse response = request.EndGetResponse(asyncResult);
- using (Stream responseresponseStream = response.GetResponseStream())
- {
- StreamReader readStream = new StreamReader(responseStream,
Encoding.UTF8);- string response = readStream.ReadToEnd();
- }
- }
另外:在WCF服務(wù)異步調(diào)用實(shí)現(xiàn)中,一定要同步得到響應(yīng)的話,可以通過(guò)SilverLight調(diào)用Javascript實(shí)現(xiàn),在Javascript中使用XMLHttpRequest類即可。
【編輯推薦】