|
我现在想把登陆执行的部分采用子线程处理,避免界面卡死无响应,我看了很多例子,但还是没有头绪怎么做,下面代码点击登陆后开始执行登陆部分线程,但是这个登陆线程比较复杂,不知道该怎么处理跳出
[code=csharp] private void btnLogin_Click(object sender, EventArgs e)
{
btnLogin.Enabled = false;
displayForm1(false);
Thread loginThread = new Thread(new ThreadStart(loginRun));
loginThread.Start();
}[/code]
下面是执行登陆部分this.Visible = false;这句会提示错误,因为他们是不同this是主线程创建的,这个委托该怎么写,我注释掉这样测试,bet.Show();一闪出现就消失了,顺便解释下这段代码,执行会自动识别验证码,尝试10次,result是GetCookie方法返回的结果,1代表登陆成功,2就是验证码错误,继续循环,其它结果就是登陆错误,跳出。displayForm1是一个控制界面控件是否可用的方法。看了很多多线程例子看得晕晕的..
[code=csharp] private void loginRun()
{
if (Login.GetRealHost() == false)
{
displayForm1(true);
return;
}
do
{
int result = Login.GetCookie();
if (result == 1)
{
tryLoginCount = 0;
this.Visible = false;
TypeBJ bet = new TypeBJ();
bet.Show();
return;
}
else if (result == 2)
{
tryLoginCount += 1;
}
else
{
tryLoginCount = 0;
displayForm1(true);
return;
}
}
while (tryLoginCount < 10);
if (tryLoginCount >= 10)
{
tryLoginCount = 0;
displayForm1(true);
MessageBox.Show("无法识别该网站验证码。", "错误信息", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}[/code]
|
|