//登录功能
private void btn_Login_Click(object sender, EventArgs e)
{
Task t = new Task(() =>
{
if (string.IsNullOrEmpty(this.txtUserName.Text))
{
this.Error_UserName.Visible = true; //这里怎么样设置主窗体Lable的值为显示啊
return;
}
else
{
this.Error_UserName.Visible = false;
}
}
private void btn_Login_Click(object sender, EventArgs e)
{
Task t = new Task(() =>
{
if (string.IsNullOrEmpty(this.txtUserName.Text))
{
this.Error_UserName.Visible = true; //这里怎么样设置主窗体Lable的值为显示啊
return;
}
else
{
this.Error_UserName.Visible = false;
}
}
解决方案
5
Action act = () =>
{
if (string.IsNullOrEmpty(this.txtUserName.Text))
{
this.Error_UserName.Visible = true; //这里怎么样设置主窗体Lable的值为显示啊
return;
}
else
{
this.Error_UserName.Visible = false;
}
};
Task t = new Task(() =>
{
if(this.InvokeRequired)
this.Invoke(act);
else
act();
});
{
if (string.IsNullOrEmpty(this.txtUserName.Text))
{
this.Error_UserName.Visible = true; //这里怎么样设置主窗体Lable的值为显示啊
return;
}
else
{
this.Error_UserName.Visible = false;
}
};
Task t = new Task(() =>
{
if(this.InvokeRequired)
this.Invoke(act);
else
act();
});
5
要么委托UI线程,要么关掉控件跨线程检测
2
this.invoke(),去查
1
1楼已经告诉你正确方法了,非UI线程对窗口UI操作用Invoke就行了。
1
1楼正解,Invoke方法
5
不要在 task 里控制 ui
enum errorcode { none, usernotexists, passwordError, … }
Task<errorcode> act { 登录验证 }
var code = await act();
根据 code 执行 ui 反馈
2
得显式invoke否则不在一个线程问题