中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

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

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

如何實現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

辽宁省| 惠州市| 莱芜市| 西乡县| 大丰市| 临汾市| 榆中县| 台湾省| 云和县| 丁青县| 海兴县| 临武县| 瑞丽市| 清丰县| 绵竹市| 安国市| 鸡泽县| 东辽县| 通许县| 佛冈县| 汉源县| 平果县| 黔江区| 柘城县| 保康县| 娄底市| 泗水县| 平遥县| 军事| 凤凰县| 洛宁县| 黑河市| 岚皋县| 开封县| 河北省| 巫山县| 晋中市| 贵港市| 西和县| 抚远县| 嘉祥县|