|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
不过你如果学.net的话,你就不要选os了,这课比较底层的。你可以旁听数据库加上软件构件和中间件。(webservices和面向服务的课也应该听一听)在.NET4.0中,Task类表露了IDisposable接口。Task可被接纳(disposable)是为了清算IAsyncResult接口中AsyncWaitHandle属性表露的守候句柄(waithandle)。在.NET4.0中,守候句柄只要在读取AsyncWaitHandle属性,大概利用Task.WaitAll、Task.WaitAny时才会被创立,其他情形挪用Task.Dispose都是过剩的。
遗憾的是,.NET4.0中的Task在处置ObjectDisposedException时显得过于果断:一旦挪用Dispose开释守候句柄以后,即便其他属性与之毫无接洽,残剩对象也会变得不不乱。
那末在.NET4.0中是不是应当挪用Task.Dispose?
不该该,除非碰到以下情形:
- 全部Task不会被缓存;
- 守候句柄是经由过程挪用Task.WaitAll、Task.WaitAny,或是读取IAsyncResult.AsyncWaitHandle创立而成;
- Task上没有其他义务或线程处于守候形态。
实在,即便一切的前提都满意,你也不必做甚么,由于闭幕器(finalizer)在清算守候句柄方面已做了不异高效的事情。以是,除非你看到一些功能成绩,不然你大概能够仍旧不必接纳task。
.NET4.5中心中的修改
在.NET4.5中,只要显式读取IAsyncResult.AsyncWaitHandle时,外部守候句柄才会被创立。其他部分,包含Task.WaitAll和Task.WaitAny都举行了从头计划,它们不再必要守候句柄。别的,跟着言语中对async/await的撑持,IAsyncResult在年夜部分场景中乃至都不再必要。
.NET4.5中Task的别的一个修改是task在开释以后仍旧可用。依照StephenToub的说法,“如今,即便Task开释以后也能够利用它的一切公然成员,而且它们利用起来就和开释之前一样。独一一个不克不及利用的成员是IAsyncResult.AsyncWaitHandle,由于它是Task实例真正开释的部分。假如试图在Task开释后会见该属性,它会抛出一个ObjectDisposedException非常。”
固然在.NET4.5中挪用Task.Dispose变得加倍平安,可是几近没有来由必要这么做。
针对.NET4.5Metro的特别划定规矩
StephenToub接着提到Task.Dispose在“.NETMetro作风使用程序”框架中乃至其实不存在。要注重的是,今朝关于此项计划变动的信息还未在WinRT的Task文档中更新反应。
从函数前往Task
在别的一篇题为“是不是应该为同步办法表露异步包装?“的文章中,Stephen深度切磋了从函数前往Task对象的话题。我们保举你浏览全篇文章,而假如你工夫不丰裕,能够浏览以下的总结部分:我以为只要那些异步办法比对应的同步办法具有可扩大性(scalability)上风时才应该被表露。异步办法不该当为了纯真地加重负载(offloading)而举行表露,由于这类上风能够经由过程利用专门用于异步实行同步办法的功效轻松完成,如利用Task.Run。 检察英文原文:ChangesandGuidancefortheTaskParallelLibraryin.NET4.5
说句实话,net网页编程跨平台根本就不是外行人想想的那种,一次编译,处处运行。 |
|