C#论坛-玄机论坛-C#论坛-玄机宝盒-玄机类库-C#

 找回密码
 关闭注册

QQ登录

只需一步,快速开始

查看: 4508|回复: 11

[番外系列] 玄机论坛C#培训课程-番外篇之C#多线程

[复制链接]
君临 发表于 2014-10-24 22:26:10 | 显示全部楼层 |阅读模式

玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
如有疑问,请加入官方群询问

您需要 登录 才可以下载或查看,没有帐号?关闭注册

x

玄机网C#培训课程-番外篇之C#多线程

本视频从最简单的语法声明写法到高级写法,逐步讲解C#多线程视频教程番外篇
以及增加平时使用到引发的错误,及使用场景进行详细的讲解C#多线程的应用!
C#多线程教程
最简单的线程的声明      
[mw_shl_code=csharp,true]Thread th = new Thread(Func); //创建线程
th.Start();//启动线程

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

{

}[/mw_shl_code]


学习线程最经典的错误

线程间操作无效: 从不是创建控件“label1”的线程访问它。

小型项目如何解决跨线程访问异常:  
Control.CheckForIllegalCrossThreadCalls = false;//忽略跨线程间的调用.不推荐大家使用.它可能会引发一些未知的异常.

创建窗口句柄时出错。

引发原因: 窗体被结束,但是线程还未结束

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

传递非object类型的写法
   [mw_shl_code=csharp,true]Thread th = new Thread(new ThreadStart(delegate {
                GetInfo(strinfo);
            }));
            th.Start();

ThreadPool   线程池.
   ThreadPool.QueueUserWorkItem(new WaitCallback(delegate {
                GetInfo(strinfo);
            }));
线程池是不可控制的.[/mw_shl_code]

Thread.Sleep(100);  //睡眠,挂起. 参数(int)单位毫秒     是全局有效.!
全局说的是主线程.

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

应用场景

         Post程序,

         需要输入验证码


         先开启线程,来执行get请求.得到验证码图像,挂起这个线程.等待验证码的输入.

  lock (this)   //
    {
         
    }
固定任务数.不固定线程数.自己计算需要多少线程


现在这个类的好处:    帮助你理解其他人是如何处理线程的.

两种情况   固定线程数,不固定任务数

           固定任务数,自动计算线程数

缺点: 无法重复利用线程.





玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

Blogger 发表于 2014-10-25 08:33:43 | 显示全部楼层
前来学习,感谢楼主!
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

inghot 发表于 2014-10-25 11:00:05 | 显示全部楼层
这个真心不错,支持。。
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

sillypgm 发表于 2014-10-25 13:04:49 | 显示全部楼层
这个多线程篇,一直很期待,学习一下R是怎么处理多线程的。
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

老段啦 发表于 2014-11-6 08:31:29 | 显示全部楼层
我已经看了2遍了
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

不太清楚 发表于 2014-11-15 09:21:23 | 显示全部楼层
多线程好重要的说啊,哈哈,我现在都是单线程,直接让它卡UI。。
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

jeanarysun 发表于 2014-11-18 09:36:04 | 显示全部楼层
支持下,
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复

使用道具 举报

gtosa 发表于 2014-11-22 21:38:59 | 显示全部楼层
多线程视频第一部文件损坏。
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

451205927 发表于 2015-5-18 09:59:11 | 显示全部楼层
是不是C#的线程也是封装了的,不是直接调用API?
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

 楼主| 君临 发表于 2015-5-18 15:54:58 | 显示全部楼层
451205927 发表于 2015-5-18 09:59
是不是C#的线程也是封装了的,不是直接调用API?

不是直接调用API. C#有自己的类
玄机论坛-专业的C#交流论坛 交流QQ群: 16885911
帖子内网盘失效后请使用下面地址

http://bbs.msdn5.com/forum.php?mod=viewthread&tid=1218
如果失效请联系站长重新分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 关闭注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

QQ|玄机论坛

GMT+8, 2020-8-15 10:17 , Processed in 0.149965 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表