繁体   English   中英

在单独的线程上消耗wcf服务

[英]consume wcf service on separate thread

我有代表简单的wcf客户应用程序的获胜形式。 该客户端通过http使用wcf服务。

表单内部有loadingLabel.Text属性,我想在其中显示loading ...文本。 当wcf服务返回数据时,应填充其他属性labelAllBooksNr.Text

服务将在allBooksNumber属性中返回整数。

 private void Form1_Load(object sender, EventArgs e)
 {
    int allBooksNumber = BookAgent.CountAllBooks();        
 }

由于我没有使用线程的经验,因此我要求某人提供我应该遵循的最佳模式。

可以使用的最佳模式是BackgroundWorker,因为在单独的线程上执行操作并提供了许多方法

从MSDN

当您需要响应式UI且与此类操作相关的长时间延迟时,BackgroundWorker类提供了一种便捷的解决方案。

 namespace WindowsFormsApplication1

  {
   public partial class Form1 : Form
   {
      public Form1()
    {
        InitializeComponent();           
    }

    private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e)
    {
        int allBooksNumber = BookAgent.CountAllBooks();
        e.Result = allBooksNumber;  
    }



    private void button1_Click(object sender, EventArgs e)
    {
         backgroundWorker1.RunWorkerAsync();
         label1.Text = "Loading....";
    }

    private void backgroundWorker1_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
    {
        label1.Text = e.Result.ToString;  
    }
}

}”

希望这个帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM