スレッドで試しましたが、
試したことを実際に示していないため、コードの何が問題なのかを判断するのは困難です。これがデスクトップ アプリケーションの場合は、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 スレッドで行う必要があります。