在单独的线程上使用wcf服务

时间:2013-11-23 22:28:50

标签: c# .net winforms wcf

我有win表单,代表简单的wcf客户端应用程序。此客户端通过http使用wcf服务。

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

来自MSDN的

  

当您需要响应式用户界面时,您将面临长时间的延迟   与此类操作相关联的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;  
    }
}

}“

希望这个帮助