91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現WCF回調

發布時間:2021-11-03 14:44:45 來源:億速云 閱讀:128 作者:小新 欄目:編程語言

這篇文章主要為大家展示了“如何實現WCF回調”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何實現WCF回調”這篇文章吧。

由于WCF回調方法并非運行在主線程中,如果WCF回調方法需要更新與異步調用結果相關的界面,例如本例中的lbMessage控件,則需要將回調的調用封送(Marshal)到當前主程序界面的同步上下文中。我們可以使用 SynchronizationContext以及它的SendOrPostCallback委托,對調用進行封送:

public ExplorerClientForm()   {   InitializeComponent();   m_synchronizationContext = SynchronizationContext.Current;   }   private SynchronizationContext m_synchronizationContext;

則WCF回調方法修改為:

//callback method   void OnTransferCompleted(IAsyncResult result)   {   Stream stream = m_service.EndTransferDocument(result);   result.AsyncWaitHandle.Close();    SendOrPostCallback callback = delegate   {   lbMessage.Text = string.Format("The file {0} had been transfered sucessfully.",   m_doc.FileName);   };   m_synchronizationContext.Send(callback,null);   }

在調用異步方法時,由于對BeginTransferDocument()和EndTransferDocument()方法的調用可能會在不同的方法體中,因而我將服務代理對象定義為private字段。如果希望將服務對象定義為一個局部變量,可以在調用BeginTransferDocument() 方法時,將代理對象傳遞到方法的asyncState參數中,然后在調用EndTransferDocument()方法之前,通過 IAsyncResult獲得準確的服務代理對象:

m_service.BeginTransferDocument(m_doc,OnTransferCompleted,m_service);

將m_service作為asyncState對象傳入之后,在調用EndTransferDocument()方法之前,就可以根據它先獲得服務代理對象:

IDocumentsExplorerService m_service = result.AsyncState as IDocumentsExplorerService;   Stream stream = m_service.EndTransferDocument(result);   //rest codes

以上是“如何實現WCF回調”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

wcf
AI

遵义县| 丽江市| 昔阳县| 赤壁市| 隆德县| 松江区| 斗六市| 益阳市| 临沂市| 肥乡县| 桂阳县| 枣强县| 深圳市| 曲松县| 铁岭县| 紫金县| 巧家县| 彭阳县| 泾川县| 和平区| 呼和浩特市| 延川县| 聂拉木县| 阿拉善左旗| 册亨县| 四平市| 河东区| 木里| 绥德县| 涪陵区| 泗阳县| 于都县| 巴里| 图片| 彰化市| 高唐县| 武山县| 东平县| 卓资县| 黎平县| 容城县|