【问题标题】:consume wcf service on separate thread在单独的线程上使用 wcf 服务
【发布时间】:2013-11-23 22:28:50
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: c# .net winforms wcf


    【解决方案1】:

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

    来自 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;  
        }
    }
    

    }'

    希望对你有所帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多