zoukankan      html  css  js  c++  java
  • 多线程编程学习笔记——异步调用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学习之旅—第三个示例系列 略微有点区别。

     

     

  • 相关阅读:
    c#中@的3种作用
    iOS7 各种问题解决
    时钟
    京东APP(部分)-安卓
    博弈取石子
    博弈取牌
    年月日
    猪(恶作剧程序)
    字符统计
    奇偶类约瑟夫
  • 原文地址:https://www.cnblogs.com/chillsrc/p/8514086.html
Copyright © 2011-2022 走看看