說明: wcf客戶端非同步呼叫與服務端**沒有關係,只是和客戶端的**有關係。
服務端服務介面:
**using
system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.servicemodel;
namespace
consoleasyservice
}服務實現:
using
system;
using
system.collections.generic;
using
system.linq;
using
system.text;
using
system.threading;
namespace
consoleasyservice
", datetime.now);
thread.sleep(
10000
);console.writeline(
"send result
", datetime.now);
return
100;
}#endregion}}
客戶端呼叫過程
1. 新增服務引用
2. 設定服務引用
選中生成非同步操作的複選按鈕,系統預設的沒選中,單擊確定按鈕,生成非同步客戶端呼叫**。
**生成的客戶端非同步呼叫**如下:
// // 此**由工具生成。
// 執行庫版本:2.0.50727.1433
// 對此檔案的更改可能會導致不正確的行為,並且如果
// 重新生成**,這些更改將會丟失。
// namespace wcftest.asycaculator ;
private void oncountcompleted(object state)
", datetime.now);
asycaculator.caculatorclient asycaculatorclient
=new
wcftest.asycaculator.caculatorclient();
asycaculatorclient.countcompleted
+=new
eventhandler
<
wcftest.asycaculator.countcompletedeventargs
>
(asycaculatorclient_countcompleted);
asycaculatorclient.countasync();
console.writeline(
"end asycall
", datetime.now);
console.read();
呼叫完成後出發的事件:
static
void
asycaculatorclient_countcompleted(
object
sender, wcftest.asycaculator.countcompletedeventargs e),"
, e.result, datetime.now);
}服務端執行結果:
客戶端執行結果:
注意結果輸出的順序。
WCF之非同步呼叫
非同步呼叫 獲得系統更好的吞吐量。使用者體驗性更好。但有時弄不好也會增加系統負擔。有兩種方法。我這裡只採用wshttp的方式。並且是採用新增服務引用的方法來做的。只需兩下就可以完成。1 在新增的 服務引用 上。配置 服務引用 勾選 以非同步來操作 2 它會自動新增 begin方法 和 end方法 這...
WCF 非同步呼叫問題
新增引用時生成 勾選允許生成非同步操作 wcf非同步呼叫三種方式 第一種 直接呼叫非同步方法 var serviceclient new myserviceclient serviceclient.messageasync erviceclient.close 第二種 begin end方式 ser...
WCF 學習筆記 7 非同步呼叫
wcf 的非同步呼叫是基於訊息交換 message exchange 來實現的,和我們通常使用委託來實現非同步呼叫有所不同。編寫步驟 1.建立服務契約。servicecontract sessionmode sessionmode.required public inte ce icalculate...