我有win表单,代表简单的wcf客户端应用程序。此客户端通过http使用wcf服务。
在内部表单中有loadingLabel.Text
属性,我想在其中显示loading ...文本。当wcf服务返回数据时,应填充其他属性labelAllBooksNr.Text
。
服务将在allBooksNumber属性中返回整数。
private void Form1_Load(object sender, EventArgs e)
{
int allBooksNumber = BookAgent.CountAllBooks();
}
由于我没有任何使用线程的经验,我要求有人提供我应该遵循的最佳模式。
答案 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;
}
}
}“
希望这个帮助