實現非同步呼叫Web Service

2022-08-27 23:51:12 字數 1050 閱讀 8943

普通呼叫web service的方法,在web service執行期間客戶端會一直等待服務執行完畢才能響應。從而造成客戶端ui執行緒的阻塞假死現象。這時候,非同步呼叫就顯得很有用,它可以讓客戶端在呼叫web service時,不至於阻塞客戶端的ui執行緒導致假死,還可以在呼叫web service的同時做些其他的處理。非同步呼叫web service也有幾種不同的方法,這裡介紹常用的兩種。

private

void

button1_click(

object

sender, eventargs e)  

//完成事件

void

back_runworkercompleted(

object

sender, runworkercompletedeventargs e)  

//呼叫方法

void

back_dowork(

object

sender, doworkeventargs e)  

其中,changeprocessbar()方法是處理進度條控制顯示的**,用於代表其他的操作。

//

//介面的進度條顯示

//void

changeprocessbar()  

第二種方法,是呼叫web service的webmethod中的async方法實現。當新增完web service的引用以後,會在本地生成**類,其中,會有乙個和原web service方法名字相同而字尾是async的方法。

private

void

button2_click(

object

sender, eventargs e)  

//完成事件處理方法

void

getproductpricecompleted(

object

sender, productservice.  

getproductpricecompletedeventargs e)  

async await實現非同步呼叫

async await使得非同步 看起來像同步 async函式會隱式地返回乙個promise,而promise的reosolve值就是函式return的值 async await不需要寫.then,不需要寫匿名函式處理promise的resolve值,也不需要定義多餘的data變數,還避免了巢狀 a...

同步呼叫與非同步呼叫

一 什麼是同步呼叫與非同步呼叫 定義 1 同步就是整個處理過程順序執行,當各個過程都執行完畢,並返回結果。2 非同步呼叫則是只是傳送了呼叫的指令,呼叫者無需等待被呼叫的方法完全執行完畢 而是繼續執行下面的流程。例如,在某個呼叫中,需要順序呼叫 a,b,c三個過程方法 如他們都是同步呼叫,則需要將他們...

PHP非同步呼叫實現方式

瀏覽器和伺服器之間只一種面向無連線的http協議進行通訊的,面向無連線的程式的特點是客戶端請求服務端,服務端根據請求輸出相應的程式,不能保持持久連線。這樣就出現了乙個問題,乙個客戶端的相應服務端可能執行1秒也有可能執行1分鐘,這樣瀏覽器就會一直處於等待狀態,如果程式執行緩慢,使用者可能就沒耐心關掉了...