WCF 非同步呼叫

2022-01-16 02:37:10 字數 2040 閱讀 2001

說明: 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...