C#学习笔记(1)

C#在上位机开发上普及度高。

上位机是指可以直接发出操控命令的计算机,一般是PC,通常用来在屏幕上显示各种信号变化(液压,水位,温度等),并将数据存储下来,供查询分析。下位机是直接控制设备,获取设备状况的计算机,一般是PLC(可编程逻辑控制器)/单片机。

C#的注释类型:
单行(//)
多行(/* */)
XML 注释(///)。

C#中的方法重载:方法重载是在同一个类中创建多个具有相同名称和唯一签名的方法的机制。当您进行编译时,编译器使用重载解析来确定要调用的特定方法。

同步与异步:
同步是顺序执行,执行完一个再执行下一个,需要等待和协调运行。异步是彼此独立运行,在等待某事件的过程中继续做其他事情。

多线程:
优点:1.资源分配更合理,并行处理程序。2.随时可以停止 。3.可设置优先级。
缺点:1.在耗时或占用大量资源时容易引发阻塞,使界面卡死。2.增加了CPU额外开销。3.产生竞争关系,导致线程死锁。多线程处理:
1.主线程等待一个或多个子线程执行完后再执行(或者)等待多个子线程中任何一个任务完成再执行
task1.Wait():等待task1线程完成再执行后面操作
Task.WaitAll(task1,task2):等待task1,task2线程完成再执行后面操作
Task.WaitAny(task1,task2):等待task1或者task2完成再执行后面操作

//any表示一些或任何一个,all表示全部或整体,由此可易于理解WaitAll和WaitAny的区别//

2.某个子线程等待一个或多个子线程执行完后再执行(或者)等待多个子线程中任何一个任务完成再执行
Task.WhenAll(task1,task2)
Task.WhenAny(task1,task2)
3.线程嵌套(父子关系):在复杂的多线程编程中,需要更清晰的表现出线程之间的关系时使用。
TaskCreationOptions.AttachedToParent(附加到父级线程),parentTask.Start();parentTask.Wait();
4.开启长耗时任务的线程
TaskCreationOptions.LongRunning
5.线程取消 
CancellationTokenSource cts=new CancellationTokenSource();cts.Token,cts.Cancel();
6.线程取消并自动清理
cts.Token.Register(()=>{//业务});
7.线程延时自动取消,不需要手动取消
CancellationTokenSource cts=new CancellationTokenSource(2000);
8.暂停线程
ManualResetEvent resetEvent = new ManualResetEvent(true);
resetEvent.Reset();
9.继续线程
resetEvent.Set();

线程池:使那些休眠或等待的线程暂时挂起,以减少占用资源,等需要用时重新启动,减少了大量创建和销毁线程的开销.
设置线程池最大最小:ThreadPool.SetMaxThreads(int workerThreads,int CompletionPortThreads);
添加任务到线程池:ThreadPool.QueueUserWorkItem(new WaitCallBack(方法名),?参数);
Control.Invoke:在拥有此控件的基础窗口句柄的线程上同步执行指定委托;Control.BeginInvoke:在拥有此控件的基础窗口句柄的线程上异步执行指定委托;
多线程缺点:1.等候使用共享资源时造成程序的运行速度变慢。这些共享资源主要是独占性的资源 ,如打印机等。 2.对线程进行管理要求额外的 CPU开销。 3.线程的死锁。即较长时间的等待或资源竞争以及死锁等多线程症状。

 

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值