• 记一下今天上下班学的Thread


    1 Thread 默认为前台线程,即主程序退出后,线程还可以继续(曾经就掉入这个坑中,使用两线程分别进行UDP收发,结果发线程结束了退出方法,收线程还在继续)

    2 Thread 没有可以暂停,可以重新启动,但是没有结束方法,使用Abort()方法强制销毁会抛异常。

    3 线程的等待用Join()实现

                List<Thread> threadList = new List<Thread>();
                for (int i = 0; i < 5; i++)
                {
                    string name = string.Format("btnThread_Click_{0}", i);
                    ThreadStart method = () => this.TestThread(name);
                    Thread thread = new Thread(method);//1 默认前台线程:程序退出后,计算任务会继续
                    thread.IsBackground = true;//2 后台线程:程序退出,计算立即结束
                    thread.Start();
                    threadList.Add(thread);
    
                    //ParameterizedThreadStart method = o => this.TestThread(o.ToString());
                    //Thread thread = new Thread(method);
                    //thread.Start(name);
                }
    
                foreach (Thread thread in threadList)
                {
                    thread.Join();
                }

    4 Thread 也没有回调和返回值,如果使用回调函数,需要手动实现

            /// <summary>
            /// 使用Thread 完成多线程回调
            /// </summary>
            /// <param name="method">要多线程执行的任务</param>
            /// <param name="callback">回调执行的任务</param>
    
            private void ThreadBeginInvoke(ThreadStart method, Action callback)
            {
                ThreadStart methodAll = new ThreadStart(() =>
                {
                    method.Invoke();
                    callback.Invoke();
                });
                Thread thread = new Thread(methodAll);
                thread.Start();
            }
    将偷懒进行到极致,是一个程序员的基本素养
  • 相关阅读:
    Asp.net 文件下载,中文文件名出现乱码
    存储过程中执行动态Sql语句
    SQLServer : EXEC和sp_executesql的区别
    C# 从服务器下载文件代码
    在windows 7 上为 sqlserver 2008 启用远程访问
    数字求和
    大道至简第一章读后感
    作业
    SharePoint2013 App 开发中 自定义网站栏,内容类型,列表。
    SharePoint2013 App开发模式
  • 原文地址:https://www.cnblogs.com/bamboo-zhang/p/9142680.html
Copyright © 2020-2023  润新知