http://www.sufeinet.com/plugin.php?id=keke_group

苏飞论坛

 找回密码
 马上注册

QQ登录

只需一步,快速开始

分布式系统框架(V2.0) 轻松承载百亿数据,千万流量!讨论专区 - 源码下载 - 官方教程

HttpHelper爬虫框架(V2.7-含.netcore) HttpHelper官方出品,爬虫框架讨论区 - 源码下载 - 在线测试和代码生成

HttpHelper爬虫类(V2.0) 开源的爬虫类,支持多种模式和属性 源码 - 代码生成器 - 讨论区 - 教程- 例子

查看: 5297|回复: 8

[Winform] 做登录功能,起线程,界面卡死的问题。。

[复制链接]
发表于 2016-10-7 22:06:33 | 显示全部楼层 |阅读模式
[C#] 纯文本查看 复制代码
 private void btnLogin_Click(object sender, EventArgs e)
        {
           
            this.lbTip.Text = "正在登录..";

            System.Threading.Thread t = new System.Threading.Thread(LoginFunc);
            t.IsBackground = true;
            t.Start();
        }

 private void LoginFunc()
        {
            LoginParam lp = new LoginParam();
            lp.LoginName = this.tbName.Text.Trim();
            lp.PWD = this.tbPwd.Text;
            LoginResult lr = BaseManager.SqlSvr.LoginSystem(lp.ToJson()).FromJson<LoginResult>();

            if (null != lr && lr.ErrCode == "1")
            {
                BaseManager.BDUser = lr.UserModel;
                this.BeginInvoke(delShowWinMainFunc);
            }
            else
            {
                this.BeginInvoke(new MethodInvoker(delegate()
                {
                    if (null == lr)
                    {
                        this.lbTip.Text = "请检查用户名和密码!";
                    }
                    else
                    {
                        this.lbTip.Text = lr.ErrMsg;
                    }
                }));
            }
        }

  private void ShowWinMain()
        {            
            WinMain wm = new WinMain();
            this.Visible = false;
            wm.ShowDialog();
            this.Close();
        }



点击登录之后,界面就会出现卡死的现象,有没有人遇到过?飞哥,能不能帮忙看看有什么问题。@苏飞


1. 开通SVIP会员,免费下载本站所有源码,不限次数据,不限时间
2. 加官方QQ群,加官方微信群获取更多资源和帮助
3. 找站长苏飞做网站、商城、CRM、小程序、App、爬虫相关、项目外包等点这里
发表于 2016-10-8 08:57:53 | 显示全部楼层
线程里面的控件赋值要使用委托
http://www.sufeinet.com/thread-3556-1-1.html
 楼主| 发表于 2016-10-8 19:58:09 | 显示全部楼层
站长苏飞 发表于 2016-10-8 08:57
线程里面的控件赋值要使用委托
http://www.sufeinet.com/thread-3556-1-1.html

就是看的你的这篇文章,用的就是你的这种方法,再显示主页面的时候出现卡死。
发表于 2016-10-9 10:13:39 | 显示全部楼层
很明显你用的不是我的方法吧
 楼主| 发表于 2016-10-9 11:13:08 | 显示全部楼层
站长苏飞 发表于 2016-10-9 10:13
很明显你用的不是我的方法吧

老大 , if (null != lr && lr.ErrCode == "1")
           {
               BaseManager.BDUser = lr.UserModel;
               this.BeginInvoke(delShowWinMainFunc);
           }

这一段真的是用的你的方法   
发表于 2016-10-9 11:16:36 | 显示全部楼层
LoginParam lp = new LoginParam();
           lp.LoginName = this.tbName.Text.Trim();
           lp.PWD = this.tbPwd.Text;

线程里面能直接这样取吗?
不能吧,

另外你用的我的,你运行一下我的看看会不会卡死
 楼主| 发表于 2016-10-9 11:23:03 | 显示全部楼层
站长苏飞 发表于 2016-10-9 11:16
LoginParam lp = new LoginParam();
           lp.LoginName = this.tbName.Text.Trim();
           l ...

我错了。。。。我这就去改。。。你的那个我早就用过,飞一般的感觉!
发表于 2016-10-9 11:45:14 | 显示全部楼层
不管是取值,还是赋值,也就是说不管是Get还是SET都必须通过委托来访问线程之外的变量或者控件
 楼主| 发表于 2016-10-9 11:55:19 | 显示全部楼层
站长苏飞 发表于 2016-10-9 11:45
不管是取值,还是赋值,也就是说不管是Get还是SET都必须通过委托来访问线程之外的变量或者控件

恩呢    懂了   谢谢飞哥了!
您需要登录后才可以回帖 登录 | 马上注册

本版积分规则

QQ|手机版|小黑屋|手机版|联系我们|关于我们|广告合作|苏飞论坛 ( 豫ICP备18043678号-2)

GMT+8, 2024-6-16 05:19

© 2014-2021

快速回复 返回顶部 返回列表