c#的委托函数和回调函数把人搞晕啦,这几天拜读了马骏老师的【C#网络高级编程】才算搞清楚

ba_wang_mao 2019-10-31 12:24:43
我是C#语言的小白,长期在单片机和嵌入式领域奋战,很少接触PC机平台的编程。

前段时间开始自学C#语言,委托函数和回调函数把人搞晕啦,拜读了马骏老师的【C#网络高级编程】才算搞清楚。

总结:
(1)、PC机平台编程时没有中断的概念,而我奋战的单片机和嵌入式领域则有中断的概念。
(2)、PC机平台编程,网络通信等待接收数据流有两种方式
方式1:同步方式
就是发送完请求后,在原地死等。
方式2:异步方式:
就是发送完请求后,去干别的事情,当系统收到数据后,会通过回调函数知道你。

(3)、由于单片机有中断的概念,当单片机发送完请求后,可以去干别的事情,当系统收到数据后,会通过中断知道你。
(4)、在嵌入式领域如果用UCOSII或freertos编程, 当单片机发送完请求后,可以去干别的事情,当系统收到数据后,在中断里可以发送一个信号量通知任务。

(5)、异步方式中的AsyncCallback委托类似于嵌入式领域的信号量
当没有产生信号量时,任务被挂起。
当产生信号量时,从挂起队列中唤醒任务,进入就绪队列,根据优先级高低抢占CPU控制权。

...全文
69 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
OrdinaryCoder 2019-10-31
  • 打赏
  • 举报
回复
正怒月神 2019-10-31
  • 打赏
  • 举报
回复
ba_wang_mao 2019-10-31
  • 打赏
  • 举报
回复
顺便说一下,所谓的委托函数就是防止你在线程修改标准控件的内容时,其它线程也正在这个时候修改标准控件的内容。

用嵌入式领域如的行话来说,就是互斥信号量的访问。

就是说这个控件被其它线程独占,这时候正在访问过程中,你这时候不能访问它,必须要等到其它线程访问结束,你才能访问它。

110,525

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧