日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關咨詢
選擇下列產品馬上在線溝通
服務時間:8:30-17:00
你可能遇到了下面的問題
關閉右側工具欄

新聞中心

這里有您想知道的互聯(lián)網營銷解決方案
對WCF異步調用進行服務操作

希望我對WCF異步調用的一點經驗能給大家?guī)韼椭?,導致WCF異步的原因也許還有很多,不過在你遇到錯誤時,可以先檢查一下你程序中的字符串,暫時把他們置為””,試試看。沒準就是他引起的問題啊。

我將服務契約的定義單獨形成了一個程序集,并在客戶端直接引用了它。然而,在這樣的服務契約程序集中,是沒有包含異步方法的定義的。因此,我需要修改在客戶端的服務定義,增加操作的異步方法。這無疑為服務契約的重用帶來障礙。至少,我們需要在客戶端維持一份具有異步方法的服務契約。#t#

所幸,在客戶端決定采用WCF異步調用用我所設計的服務操作時,雖然需要修改客戶端的服務契約接口,但并不會影響服務端的契約定義。因此,服務端的契約定義可以保持不變,而在客戶端則修改接口定義如下

 
 
  1. [ServiceContract]
  2. public interface IDocumentsExplorerService
  3. {
  4. [OperationContract]
  5. Stream TransferDocument(Document document);
  6. [OperationContract(AsyncPattern = true)]
  7. IAsyncResult BeginTransferDocument(Document document,
  8. AsyncCallback callback, object asyncState);
  9. Stream EndTransferDocument(IAsyncResult result);

注意,在BeginTransferDocument()方法上,必須在OperationContractAttribute中將AsyncPattern屬性值設置為true,因為它的默認值為false。

WCF異步調用方式如下:

 
 
  1. BasicHttpBinding binding = new BasicHttpBinding();
  2. binding.SendTimeout = TimeSpan.FromMinutes(10);
  3. binding.TransferMode = TransferMode.Streamed;
  4. binding.MaxReceivedMessageSize = 9223372036854775807;
  5. EndpointAddress address = new EndpointAddress
  6. ("http://localhost:8008/DocumentExplorerService");
  7. ChannelFactory factory = 
  8. new ChannelFactory(binding,address);
  9. m_service = factory.CreateChannel();
  10. ……
  11. IAsyncResult result = m_service.BeginTransferDocument(doc,null,null);
  12. result.AsyncWaitHandle.WaitOne();
  13. Stream stream = m_service.EndTransferDocument(result);

分享文章:對WCF異步調用進行服務操作
文章源于:http://m.5511xx.com/article/coheoph.html