A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

public void singleThreadScan()
        {
            string filePath = System.AppDomain.CurrentDomain.SetupInformation.ApplicationBase + @"弱口令.txt";//获取文本物理路径
            using (StreamReader sr = new StreamReader(filePath, Encoding.Default))//准备流读文件内容
            {
                string pwd = "";
                while (!Iscounted)//Iscounted  标志 初始 false  循环读文本行
                {
                    if ((pwd = sr.ReadLine()) != null)
                    {
                       // mr = new ManualResetEvent(false);
                        lbox_msg.Items.Add(count + "............" + pwd);
                        lbox_msg.SelectedIndex = i;
                        i++;
                        th = new Thread(startConnectDB);
                        th.IsBackground = true;
                        th.Start(pwd);
                        th.Join(0);

                        //startConnectDB(pwd);//单线程调用

                        //线程池调用
                        //ThreadPool.SetMaxThreads(1000, 1000);
                        //ThreadPool.QueueUserWorkItem(new WaitCallback(startConnectDB), pwd);
                        //mr.WaitOne();
                        //count++;
                    }
                }
               
                MessageBox.Show("end");
            }
        }
        public void startConnectDB(object pw)
        {
            string pwd = (string)pw;
            try
            {
                IPAddress[] ip = Dns.GetHostAddresses(txt_ServerName.Text.Trim());//读取文本框的服务IP
               //组成字条串
                string connStr = Conn.conn + pwd;
                connStr = connStr.Replace("@{ip}", ip[0].ToString());
                using (SqlConnection conn = new SqlConnection(connStr))
                {
                    endTime = DateTime.Now;
                    lb_endtime.Text = endTime.ToLongTimeString();
                    Timespan();
                    conn.Open();
                    if (conn.State == ConnectionState.Open)
                    {
                        MessageBox.Show("cur");
                        txt_pwd.Text = pwd;
                        Iscounted = true;
                    }
                    if (th.IsAlive)
                    {
                        th.Abort();//kill线程
                    }
                }
            }
            catch (Exception)
            {
                ;
            }
为什么这样还占用这么大的CPU资源

评分

参与人数 1技术分 +2 收起 理由
郑文 + 2

查看全部评分

1 个回复

倒序浏览
应该是线程被阻塞了,把这句改成这样试试
while(!th.IsAlive)
{
        System.Threading.Thread.Sleep(1);
}

th.Abort();//kill线程

结束线程之前等待

评分

参与人数 1技术分 +1 收起 理由
宋天琪 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马