我试过用线程,
您还没有真正展示您尝试过的内容,因此很难判断您的代码可能有什么问题。如果这是一个桌面应用程序,您可以考虑使用BackgroundWorker
.
例如:
private void LoginButtonClick(object sender, EventArgs e)
{
label1.Text = "Connecting";
var bw = new BackgroundWorker();
bw.DoWork += Login;
bw.RunWorkerCompleted += LoginCompleted;
bw.RunWorkerAsync();
}
private void Login(object sender, DoWorkEventArgs e)
{
Service.Service1 ws = new Service.Service1();
bool success = = ws.login(username, password);
e.Result = success;
}
private LoginCompleted(object sender, RunWorkerCompletedEventArgs e)
{
bool success = (bool)e.Result;
if (success)
{
label1.Text = "You have successfully logged in";
}
else
{
label1.Text = "Wrong username and password";
}
}
在桌面应用程序中使用后台线程时也要小心。你应该确保你永远不会在这个后台线程中访问你的 UI 控件。这应该始终在主 UI 线程上完成。