前言
7月份的时候去深圳大学城图书馆借了一本《C# 2012大学教程》,由此开启了我的C#学习之旅。这本外国人写的书的确不错!让我不仅是学习C#语法,更是踏上了面向对象之路。10月份公司有项目需求,需要开发一个自研阀测试上位机,方便生产人员进行操作和观察。项目虽然做完了,但是感觉C#代码还有很大优化的空间,但是自己目前还没有掌握C#高级部分,遂又开始学习,同时用博客进行记录。
目标
使用uC/OS-II开发过超万行C代码量的我自然是对这些基本概念很是明了。所以关注点在于C#的多线程相关的语法,最终优化我曾经的自研阀测试上位机软件。
System.Threading 命名空间
System.Threading
命名空间提供一些使得可以进行多线程编程的类和接口。
常用类
Thread类 创建并控制线程,设置其优先级并获取其状态。
ThreadStart委托 表示在 Thread 上执行的方法。
ThreadStart委托 表示在 Thread 上执行的方法。
常用枚举
ThreadPriority指定 Thread 的调度优先级。
ThreadState 指定 Thread 的执行状态。
ThreadState 指定 Thread 的执行状态。
多线程示例
一个线程类
包含多线程使用的方法,也可以说是包含多个线程,实现了线程的主体代码。
class Work
{
public static void DoWork()
{
Console.WriteLine("Static thread procedure.");
}
public int Data;
public void DoMoreWork()
{
Console.WriteLine("Instance thread procedure. Data={0}", Data);
}
}
主类
声明并实例化ThreadStart 委托对象threadDelegate,threadDelegate指向“一个任务”,或者说是指向“一个线程”。
声明并实例化Thread类的对象newThread,这样便可以调用Thread类的Start()方法启动线程了。
class Test
{
static void Main()
{
ThreadStart threadDelegate = new ThreadStart(Work.DoWork);
Thread newThread = new Thread(threadDelegate);
newThread.Start();
Work w = new Work();
w.Data = 42;
threadDelegate = new ThreadStart(w.DoMoreWork);
newThread = new Thread(threadDelegate);
newThread.Start();
}
}
文章中引用出处:https://msdn.microsoft.com/query/dev10.query?appId=Dev10IDEF1&l=ZH-CN&k=k(SYSTEM.THREADING);k(TargetFrameworkMoniker-%22.NETFRAMEWORK%2cVERSION%3dV3.5%22);k(DevLang-CSHARP)&rd=true