nullnull多线程西源软件培训中心回顾 回顾 调试是搜寻和消除应用程序中的错误的过程
语法错误
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示编译器无法理解代码
调试模式可用来重复编译和排除应用程序中的错误,直至能够成功运行
“局部变量”窗口允许用户监控当前程序中所有变量的值
单元测试和集成测试是测试大型应用程序的常用技术
当应用程序遇到运行时错误时,就会引发异常
C# 中的所有异常都派生自 Exception 类目标目标理解线程的概念
理解.NET中线程的属性和
方法
快递客服问题件处理详细方法山木方法pdf计算方法pdf华与华方法下载八字理论方法下载
创建和使用线程
理解线程的特点、优点及使用场合线程简介线程简介同时执行所有任务,时间更少,效率更高读 ,写一览无遗血液循环在同一时间点执行各项进程 编译程序
发送/接收邮件
打印文件
其他操作系统允许计算机同时执行多项操作程序
(进程)线程简介线程简介程序 1 程序 2线程 1线程 2线程 3线程 1线程 2线程 3单独的执行路径线程简介线程简介在以下情况中可能要使用到多线程: 程序需要同时执行两个或多个任务程序要等待某事件的发生,例如用户输入、文件操作、网络操作、搜索等后台程序System.Threading 命名空间 2-1 System.Threading 命名空间 2-1 System.Threading 命名空间 2-2System.Threading 命名空间 2-2Thread 类的属性和方法 2-1Thread 类的属性和方法 2-1引用System.Threading 命名空间Thread 线程实例名 = new Thread(new ThreadStart(方法名));运行在线程上的方法只创建但不启动线程线程实例名.Start();Thread 类的属性和方法Thread 类的属性和方法静态静态线程的生命周期线程的生命周期在 I/O 操作期间线程被阻止线程已创建但并未启动线程已启动I/O 操作完成后运行线程被阻止,另一个操作正在进行提前中断或特地停止线程暂时中断的线程 线程已恢复示例示例class SimpleThreadDemo
{
static void Main(string[] args)
{
Thread.CurrentThread.Name = “主线程";
Thread objThread =
new Thread(new ThreadStart(ActionMethod));
objThread.Name = “子线程";
//启动子线程, 并为该线程执行 ActionMethod
objThread.Start();
//这将为主线程执行 ActionMethod
ActionMethod();
}
static void ActionMethod()
{
for(int count = 1; count <= 10 ; count++)
{
Console.WriteLine(“线程名:" +
Thread.CurrentThread.Name);
}
}
}实例化 objThread 线程并开始执行 ActionMethod()将由应用程序线程执行输出结果混乱锁定机制锁定机制程序线程1线程2共享资源 锁定机制保证每次只有一个线程可以访问共享资源缓冲和隔离示例示例class ThreadLockDemo
{
static void Main()
{
Thread.CurrentThread.Name = “主线程";
ThreadLockDemo objDemo = new ThreadLockDemo();
Thread newThread = new Thread
(new ThreadStart(objDemo.DoTask));
newThread.Name = “子线程";
newThread.Start();
objDemo.DoTask();
}
void DoTask()
{
lock(this)
for(int count = 1; count <= 10 ; count++)
{
Console.WriteLine(“线程名:" +
Thread.CurrentThread.Name);
}
}
}实例化 newThread 线程并开始执行 DoTask() 锁定当前实例 objDemo,在块中完成执行,然后释放对象调度线程调度线程程序 1程序 2线程 1线程 2线程 3线程 1线程 2线程 3先执行哪个线程?调度线程调度线程ThreadPriority 枚举示例示例static void TaskTwo()
{
for(int index = 5000;index > =4990; index--)
{
Console.WriteLine(index);
}
}static void Main(string[] args)
{
Thread objThreadOne = new Thread(new ThreadStart(TaskOne));
Thread objThreadTwo = new Thread(new ThreadStart(TaskTwo));
objThreadOne.Start();
objThreadTwo.Start();
}static void TaskOne()
{
for(int count=1;count<=5;count++)
{
Console.WriteLine(count*2);
}
}无优先级线程,同时执行,输出无序….示例示例static void Main(string[] args)
{
Thread.CurrentThread.Name = “主线程";
Thread objThreadOne = new Thread(new ThreadStart(TaskOne));
objThreadOne.Name = “子线程 1";
Thread objThreadTwo = new Thread(new ThreadStart(TaskTwo));
objThreadTwo.Name = “子线程 2";
// 这将启动子线程
objThreadOne.Start();
objThreadTwo.Start();
objThreadTwo.Priority = ThreadPriority.Highest;
}将在执行第一个线程前执行 objThreadTwo线程安全性线程安全性线程安全性就是保护类的成员和代码的安全,从而使它们不会同时被几个线程中断
如果类中的成员和代码受到保护而不会被几个线程中断,则这个类称为线程安全的类void DoTask()
{
lock(this)
...
{
...
}
}应用程序示例应用程序示例演示多线程计算的应用程序……应用程序示例应用程序示例//lock(this)
{
long sum = long.Parse(txtOutput.Text);
sum += result;
txtOutput.Text = sum.ToString();
}演示输出结果……应用程序示例应用程序示例思考:
1.为何100个线程所消耗的时间比一个线程消耗的时间要长?
2.对于游戏,不同的动作(例如跑步和射击)会真的采用线程来描述吗?
如果不采用线程,你知道哪些
方案
气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载
?
总结
初级经济法重点总结下载党员个人总结TXt高中句型全总结.doc高中句型全总结.doc理论力学知识点总结pdf
总结线程是在共享内存空间中并发的多道执行路径
在 C# 中,是使用 System.Threading 命名空间中的 Thread 类来创建线程的
线程优先级可以更改为 ThreadPriority 枚举中定义的一个值
C# 中的 lock 关键字是实现线程同步的一种方法
同步的线程称为安全线程
除非绝对必要,否则不要创建线程安全的代码,因为添加不必要的锁定会降低性能作业作业进程和线程有什么区别?
2个线程。线程1从1循环到10000,线程2从1循环到20000,结果分别在其下控制台中显示。 作业作业编写一个基于Windows窗体的应用程序,实现打字练习的功能,要使用多线程,在主线程里用Timer控件定时产生Label控件,每个Label控件显示一个随机产生的字母,每产生一个Label就新开一个线程(辅助线程),这个线程用于控制Label控件的向下移动,主线程监视键盘输入,如果键盘输入文本与这个Label控件的Text相同,Label消失。
提示:
每个辅助线程监视Label状态,如果Label消失,对应的线程终止。
Timer控件的使用请查阅MSDN。