c# begin & end.

begin & end

1.
begin的时候,应该是只注册了事件。和io没有交集,马上就进入了下一条语句。
而回调的事件,如果没有触发,并不会立刻有线程去执行这个回调方法。

2.
当接受到连接,或数据,从一般来说,应该是操作系统,马上唤醒挂起的线程。
而begin & end , 测试发现,并没有挂起任何线程,那么估计是 .net 框架已经帮我们启动了新线程 挂断在 等待io上,所以vs并不知掉。
一旦有数据到来,操作系统唤醒 .net 框架的线程,而这个线程马上会执行我们在begin中注册的事件。

3.
end
网上都说有线程挂起在end上。打断点发现。根本不会有线程挂断在end上。这个。。。。。。。。。

所以,begin只注册事件。当有对应事件触发后,会有另外一个线程来调用 回调函数,当执行到end 的时候,可能会有一些不可告人的事情处理。
而不是begin之后,马上有线程执行回调,并挂断在end上。

4,

观察了下vs   的线程运行时间,猜测是.net的线程挂起在等待io上,而不是我们的end上。有事件,就调用注册的事件。

原文地址:https://www.cnblogs.com/lsfv/p/8243726.html