C# 长时间操作前显示消息

C# 长时间操作前显示消息,c#,winforms,web-services,label,C#,Winforms,Web Services,Label,我正在开发windows mobile应用程序。对webservice的调用需要几秒钟才能执行。我正在尝试在消息运行之前显示它 lblSearchMessage.Text = "Please wait..."; var info = proxy.FindProfiles(); lblSearchMessage.Text = "Completed"; 问题是我没有看到“请稍候”消息。当它运行时,标签仍然清晰,直到请求完成,我最终只看到“completed”消息。您应该使用C#的Backgroun

我正在开发windows mobile应用程序。对webservice的调用需要几秒钟才能执行。我正在尝试在消息运行之前显示它

lblSearchMessage.Text = "Please wait...";
var info = proxy.FindProfiles();
lblSearchMessage.Text = "Completed";

问题是我没有看到“请稍候”消息。当它运行时,标签仍然清晰,直到请求完成,我最终只看到“completed”消息。

您应该使用C#的
BackgroundWorker
Task
Wait
功能(取决于您使用的是哪个dot net framework版本)将长时间运行的任务委派给后台线程。在主线程中更新UI,它将立即反映更改。您不应该在主线程中执行长时间运行的任务,因为它会阻塞UI,给用户留下不好的印象和体验

看看课堂。它还有一个简单的教程,可以清楚地说明如何在应用程序中使用它

在开始后台工作之前

lblSearchMessage.Text=“请稍候…”

一旦背景工作完成,你就可以

lblSearchMessage.Text=“已完成”

像这样试试

lblSearchMessage.Text = "Please wait...";
Application.DoEvents(); 
var info = proxy.FindProfiles();
lblSearchMessage.Text = "Completed";

感谢您提供有用的信息,不幸的是,Compact Framework不支持BackgroundWorker。尝试使用ThreadPool.QueueUserWorkItem,但它使我已经非常复杂的代码变得复杂。