C#多线程

class TwinCatTCPServer
    {
        public static void tcpClient()
        {
            IPAddress ipAdd = System.Net.IPAddress.Parse(/*IP地址*/"127.0.0.1");
            int port = 8080;
            //反复连接服务端(假如断开的话)
           while(true)
            {
                Console.WriteLine("客户端启动……");
                TcpClient client = new TcpClient();
                try
                {
                    //与服务器连接
                    client.Connect(ipAdd, port);
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                    return;
                }
                // 打印连接到的服务端信息
                Console.WriteLine("已经成功与客户端建立连接!{0} --> {1}", client.Client.LocalEndPoint, client.Client.RemoteEndPoint);
                NetworkStream ns = client.GetStream();
                int dataRec;
                while (client.Connected)
                {
                    for(int i = 0;i<8;i++)
                    {
                        dataRec = ns.ReadByte();
                        publicValue.tasks.Enqueue(dataRec);
                    }
                }
            }
        }
        static void Main(string[] args)
        {
            //初始化全局变量
            publicValue.isConnected = false;
            publicValue.tasks.Clear();
            //启动收取外部信号子线程
            ThreadStart clientStart = new ThreadStart(tcpClient);
            Thread clientThread = new Thread(clientStart);
            clientThread.IsBackground = true;
            clientThread.Start();
//以下的无关代码省略

主要是需要先创建一个ThreadStart对象,然后再利用这个对象创建Thread,ThreadStart对象的参数是一个函数(本例中是public static void函数),然后Thread对象调用Start()方法开始执行。

如何在主程序关闭的时候自动关闭子线程

此问题一般出现在子线程用于通信的情况下,设置了无限循环,无法自动结束的情况

解决方法

clientThread.IsBackground = true;

将子线程Thread对象的IsBackGround属性设置为true,此时主线程被关闭的时候,系统会自动调用子线程的Abort()方法,关闭子线程

C#如何彻底关闭自已,退出子线程?_骑着老虎的小兵-CSDN博客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值