C#于C++的拓展(下)

多线程:

(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);
  1. 方法Write():
  //array存放 待压缩的字节数据,offset偏移量决定这个数组从哪个字节开始压缩,count决定读多少个字节去压缩。
  public overrride void Write(byte[] array, int offset, int count)
  1. 方法Read():
  //array存放 解压后的临时数据,offset偏移量决定这个数组从哪个字节开始存放,count决定读多少个字节
  public overrride int Read(byte[] array, int offset, int count);

(79)using的作用:

  1. 作为导入命名空间的指令:using System;
  2. 定义语句模块,以自动释放资源:
  using (Class class = new Class()){}//数据库,文件I/O操作
  1. 定义简短命名空间的别名:
  //之后就可以用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中的表:

  1. 索引方式:dataset.Tables[i];
  2. 名称方式: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#。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值