多线程:
(72)进程:一个程序的动态执行过程。
(73)Process
类:进程类
(74)前台进程和后台进程:所有前台进程停止时,后台进程自动停止。
(75)CPU运行速度快,I/O接口速度慢,充分利用CPU完成其他操作的同时,
可以开个线程给I/O接口(比如:键盘输入)。
(76)Thread
类:
//常用的两种重载形式:
public Thread(ThreadStart start)
public Thread(ParameterizedThreadStart start)
//两个参数对应的委托声明形式如下:
public delegate void ThreadStart();
public delegate void ParameterizedThreadStart(object obj);
创建线程:
class TreadTest{...}
//利用上面两个委托完成创建线程的准备工作:
TreadTest tt = new ThreadTest();
ThreadStart = new ThreadStart(tt.M1);//M1,M2都是一个实现逻辑的方法
ParameterizedThreadStart pts = new ParameterizedThreadStart(tt.M2);
//构造函数创建线程:
Thread t = new Thread(ts);
Thread tp = new Thread(pts);
启动线程:
t.Start();
tp.Start();
优先级:
t.Priority = ThreadPriority.Lowest;
tp.Priority = ThreadPriority.Highest;
//优先级高的执行次数多一点,但不是保证两者的执行完顺序。
后台线程:
t.IsBackground = false;
终止线程:
Thread.CurrentThread.Abort();
暂停线程:
Sleep();//单位ms
合并线程://不推荐使用,会有很多意外的问题。
t.Join();
tp.Join();
(71) 线程同步:避免两个线程同时执行。(只要线程1没有执行完毕就不让线程2执行)
lock()
:最简洁的方式之一(Monitor的精简版)。
Monitor()
:Monitor.Enter();
//指定对象获取排他锁。
Mutex
:互斥对象,一个时刻只能被某一个线程拥有的对象(Mutex mtx = new Mutex();
)
ManualResetEvent
:在线程间收发信号进行通信,从而实现同步处理。
mau.Set();//变为又信号状态,即执行
mau.Reset();//变为无信号状态,即不执行
AutoResetEvent
:自动同步事件。
(72) 线程池:用于在后台执行多个任务的线程集合。(避免频繁创建销毁浪费大量资源)
QueueUserWorkItem();//将方法排队等待执行,方法在有空的时候执行。
序列化:
(73)序列化:将对象的状态转换成适合保持或者传输的过程。(对象—>流)
(74)序列化和反序列化的结合可以实现对象的存储和对象的传输。
(75)二进制序列化:[Serialisable]
,BinaryFormatter
。
void Serialize(Stream s,object o);//将对象o序列化到流s中
object Deserialize(Stream s);//从流读取数据并且反序列化成对象
(76)SOAP序列化,XML序列化:用于将对象换为网络容易传输的格式。
(77)MemoryStream
:序列化到内存流。
压缩和解压:
(78)DeflateStream
:无损压缩和解压的行业标准算法。
//待解压缩的流,枚举确定解压(CompressionMode.Decompress)还是压缩(CompressionMode.Compress)
public DeflateStream(Stream stream, CompressionMode mode);
- 方法
Write()
:
//array存放 待压缩的字节数据,offset偏移量决定这个数组从哪个字节开始压缩,count决定读多少个字节去压缩。
public overrride void Write(byte[] array, int offset, int count)
方法Read():
//array存放 解压后的临时数据,offset偏移量决定这个数组从哪个字节开始存放,count决定读多少个字节
public overrride int Read(byte[] array, int offset, int count);
(79)using
的作用:
- 作为导入命名空间的指令:
using System;
- 定义语句模块,以自动释放资源:
using (Class class = new Class()){}//数据库,文件I/O操作
- 定义简短命名空间的别名:
//之后就可以用WordNs代替Microsoft.Office.Interop.Word
using WordNS = Microsoft.Office.Interop.Word;
SQL:
(79)SQL:用于访问和处理数据库的标准计算机语言。
(80)SQL含三部分:定义(Create
等),操作(Insert
等),控制(Grant
等)
(89)记录:表的每一行,即称为一条记录。
(90)创建数据库:create database DatabaseName
(91)创建表:create table TableName{}
(92)Insert
:添加数据记录。
(93)Select
:查询数据。
(94)order by
:排序。
(95)where
:过滤。
(96)Update
:修改记录。
(97)Delete
:删除部分或者全部记录。
ADO.NET
(98)ADO,NET:提供了平台互用性和可伸缩的数据访问方式,可以轻松访问各种数据库。
(99)联机模式:数据库和应用程序一直保持链接。
(100)离线模式:需要获取数据则连接数据库,获取后立即断开与数据库的连接。
(101)Connection
对象(数据连接对象):负责对数据源的连接。
(102)commad
对象:数据库命令对象,主要执行添加,删除,修改查询的操作命令。
(103)DataReader
对象:读取数据。
(104)DataAdapter
(数据适配器):可以使用command
规定的操作从数据源中检索
出数据送往数据集对象(DataSet
),或者将数据集中经过编辑后的数据送回
数据源。
(105)DataSet
:数据集对象,用于表示那些储存在内存中的数据。(管理存储在内存中的数据以及对数据的离线操作。
(106)获取DataSet
中的表:
- 索引方式:dataset.Tables[i];
- 名称方式:dataset.Tables[“TableName”];
(107)读取table中的行:
DataRow dr = table.Row[i];//i>=0
(108)读取table中的列:
dr.Columns[i].ToString();dr.Columns[“FieldName”].ToString();
(109)列的创建:
DataColumn dc = new DataColum(“fieldname”,typeof(type));//实例化
Table.Columns.Add(dc);//添加
(108)行的创建:
DataRow row = table.NewRow();
table.Row.Add(row);//table为DataTable对象
到这就结束了,因为网上的教程有很多,所以我只是把大概的方法概念罗列了一下,方便学完C++,C的同学进一步学习C#。