av激情亚洲男人的天堂国语,日韩欧美精品一中文字幕,无码av一区二区三区无码,国产又色又爽又刺激的a片,国产又色又爽又刺激的a片

對WCF異步調(diào)用進(jìn)行服務(wù)操作

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

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

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

 
 
  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屬性值設(shè)置為true,因為它的默認(rèn)值為false。

WCF異步調(diào)用方式如下:

 
 
  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異步調(diào)用進(jìn)行服務(wù)操作
文章轉(zhuǎn)載:http://uogjgqi.cn/article/coheoph.html
掃二維碼與項目經(jīng)理溝通

我們在微信上24小時期待你的聲音

解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流