zoukankan      html  css  js  c++  java
  • BackgroundWorker后台线程

    BackgroundWorker connectWork = new BackgroundWorker();
     public FormClient()
    {
          connectWork.DoWork += new DoWorkEventHandler(connectWork_DoWork);
                connectWork.RunWorkerCompleted += new RunWorkerCompletedEventHandler(connectWork_RunWorkerCompleted);
    }
    
     /// <summary>
            /// 异步方式与服务器进行连接
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            void connectWork_DoWork(object sender, DoWorkEventArgs e)
            {
                client = new TcpClient();
                IAsyncResult result = client.BeginConnect(serverIP, 8889, null, null);
                while (!result.IsCompleted)
                {
                    Thread.Sleep(100);
                    AddStatus(".");
                }
                try
                {
                    client.EndConnect(result);
                    e.Result = "success";
                }
                catch (Exception ex)
                {
                    e.Result = ex.Message;
                    return;
                }
            }
    
            /// <summary>
            /// 异步方式与服务器完成连接操作后的处理
            /// </summary>
            /// <param name="sender"></param>
            /// <param name="e"></param>
            void connectWork_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
            {
                if (e.Result.ToString() == "success")
                {
                    AddStatus("连接成功");
                    //获取网络流
                    NetworkStream networkStream = client.GetStream();
                    //将网络流作为二进制读写对象
                    br = new BinaryReader(networkStream);
                    bw = new BinaryWriter(networkStream);
                    AsyncSendMessage("Login," + txt_UserName.Text);
                    Thread threadReceive = new Thread(new ThreadStart(ReceiveData));
                    threadReceive.IsBackground = true;
                    threadReceive.Start();
                }
                else
                {
                    AddStatus("连接失败:" + e.Result);
                    btn_Login.Enabled = true;
                }
            }
    
    
     private void btn_Login_Click(object sender, EventArgs e)
            {
                    connectWork.RunWorkerAsync();
            }
  • 相关阅读:
    ERROR 1045 (28000): Access denied for user root@localhost (using password:
    MySQL: InnoDB 还是 MyISAM?
    PHP系统函数
    为什么分离数据库软件和数据库服务?
    C#索引器的作用及使用
    asp.net 中Session的运用,及抛出错误“未将对象引用设置到对象的实例”
    C#父类对象和子类对象之间的转化
    C#中属性简写原理
    c# 中Intern的作用
    C# 中ref和out的区别
  • 原文地址:https://www.cnblogs.com/liuxinls/p/2909794.html
Copyright © 2011-2022 走看看