mcevilrock 发表于 2015-10-9 01:05:54

【番外篇】C#多线程教程

课程名:
[*]C#培训课程-番外篇之C#多线程

课程说明:
[*]本视频从最简单的语法声明写法到高级写法,逐步讲解C#多线程视频教程番外篇
[*]以及增加平时使用到引发的错误,及使用场景进行详细的讲解C#多线程的应用!

C#多线程教程:最简单的线程的声明                  Thread th = new Thread(Func); //创建线程
            th.Start();//启动线程

            private void Func()//线程执行的方法

            {

            }
学习线程最经典的错误:线程间操作无效: 从不是创建控件“label1”的线程访问它。
[*]小型项目如何解决跨线程访问异常:
[*]Control.CheckForIllegalCrossThreadCalls = false;//忽略跨线程间的调用.不推荐大家使用.它可能会引发一些未知的异常.

创建窗口句柄时出错。
[*]引发原因: 窗体被结束,但是线程还未结束

前后台线程的区别
[*]th.IsBackground = true;//当前线程为后台线程
[*]后台线程和前台线程
[*]引发一个错误: 当窗体关闭,方法内没有调用窗体控件时.虽然看着窗体已经结束,但是任务管理器中一样可以看见进程依然在运行.
[*]原因: 启用前台线程,但是UI关闭后,没有通知前台线程结束,主线程并未完全退出.因为只要有一条子线程还在运行,那么它(子线程)将阻塞主线程关闭.
[*]窗体关闭前台线程依然会继续运行.后台线程则不会.

线程的销毁时间
[*]传递非object类型的写法
[*]Thread.Sleep(100);//睡眠,挂起. 参数(int)单位毫秒   是全局有效.!
[*]全局说的是主线程.

线程暂停,恢复
[*]th.Suspend();   //挂起线程
[*]th.Resume();   //继续挂起的线程
[*]ThreadState   //线程的状态枚举

应用场景:
[*]Post程序,
[*]需要输入验证码
[*]先开启线程,来执行get请求.得到验证码图像,挂起这个线程.等待验证码的输入.
lock (this)   //锁
    {
         
    }
[*]固定任务数.不固定线程数.自己计算需要多少线程
            Thread th = new Thread(new ThreadStart(delegate {
GetInfo(strinfo);
            }));
            th.Start();

            //ThreadPool   线程池.
            ThreadPool.QueueUserWorkItem(new WaitCallback(delegate {
                GetInfo(strinfo);
            }));
            //线程池是不可控制的.
现在这个类的好处:   
[*]帮助你理解其他人是如何处理线程的.
[*]两种情况:固定线程数,不固定任务数
[*]固定任务数,自动计算线程数
[*]缺点: 无法重复利用线程.

免费课程下载地址:http://pan.baidu.com/s/1gdAFesb

mcevilrock 发表于 2016-11-1 22:12:38

原内容中失效的外链在此帖补充.
百度盘:链接:http://pan.baidu.com/s/1boZu0qV 密码:ou0c

小狼Ccc 发表于 2016-2-25 22:46:10

- - 带我飞...

PaulAndC 发表于 2016-9-22 13:52:25

POST必学课程,收下{:3_52:}

Kellas 发表于 2016-9-23 10:49:29

网盘链接不存在了{:3_60:}

PaulAndC 发表于 2016-9-26 09:33:29

网盘链接不存在了{:3_60:}

teammade 发表于 2016-10-6 10:36:37

网盘链接不存在,LZ能否在分享一下{:3_59:}

yinghao2005 发表于 2016-10-11 02:21:11

失效了哦

378864509 发表于 2016-10-20 23:58:26

谢谢版主大大分享!!!!

pqqdream 发表于 2019-2-22 11:24:47

楼主链接都挂了啊
页: [1] 2
查看完整版本: 【番外篇】C#多线程教程