多線程編程學習筆記——異步調用WCF服務


接上文 多線程編程學習筆記——使用異步IO

接上文 多線程編程學習筆記——編寫一個異步的HTTP服務器和客戶端

 接上文 多線程編程學習筆記——異步操作數據庫

 

 

         本示例描述了如何創建一個WCF服務,並宿主在命令行應用程序中,客戶端可以訪問服務元數據,並以異步的方式消費它。    

         首先,我們創建了一個WCF服務。關於如何創建WCF服務,可以參考我之前的文章(WCF學習之旅—第三個示例之一(二十七)WCF學習之旅—第三個示例之五(三十一)

           然后,我們進行異步調用WCF的代理代碼的生成。

          第三、在visual studio 的資源管理器中,鼠標右鍵,在彈出菜單中選擇“添加服務引用…”。如下圖。

 

          第四、在“添加服務引用”界面中,在選中需要添加的服務之后,點擊“高級”按鈕,在“服務引用設置”中選中“生成異步操作”,然后點擊“確定”。如下圖。

 

     第五, 在解決方案資源管理器中,選中“FrmBook.cs”文件,在彈出的右鍵菜單中選擇“打開”,或者使用鼠標左鍵雙擊。

     第六, 在FrmBook.cs界面中,添加“異步查詢選中書籍”按鈕,並用鼠標雙擊按鈕。

     第七,  然后在 buttonAsyncGetBook_Click事件處理程序中添加以下代碼:

        /// <summary>
        /// 異步查詢書籍信息
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void buttonAsyncGetBook_Click(object sender, EventArgs e)
        {
            Books book = new Books();
            var client=GetAsyncBook(book);       

           // client.GetAwaiter().GetResult();
           // ShowBook();
        }

        private async Task GetAsyncBook(Books book)
        {         

            BookServiceRef.BookServiceClient bookSvrClient = new BookServiceRef.BookServiceClient();
            if (gridBooks.SelectedRows.Count > 0)
            {
                book = gridBooks.SelectedRows[0].DataBoundItem as Books;
                textBoxMsg.Text = book.BookID.ToString();
                await Task.Delay(200);
                var result =  bookSvrClient.GetBookAsync(book.BookID.ToString());
                textBoxMsg.Text = result.Result;
            }
            else
            {
                textBoxMsg.Text = "沒有選中相應的記錄!";
            }
        }

 

 

   第八,使用異步調用WCF的這個服務之后,得到的結果如下圖。我的截圖跟WCF學習之旅—第三個示例系列 略微有點區別。

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM