由于async void
方法可能存在危险,我使用属性[AsyncVoid]
标记它们,并在启动应用程序时使用反射检查所有async void
方法都具有此属性,所以我没有错过一个因为他们很难找到。例如,这是一个隐藏的隐式async void
方法:
backgroundWorker.DoWork += async (sender, args) => await HandleFrames()
有没有办法将[AsyncVoid]
属性添加到此隐藏的async void
方法中?比如:
backgroundWorker.DoWork += [AsyncVoid] async (sender, args) => await HandleFrames()
答案 0 :(得分:1)
可悲的是没有。从C#5.0规范(第17.2节,第417页):
可以在全局范围指定属性(以指定属性) 包含程序集或模块)和类型声明(§9.6), class-member-declarations (§10.1.5), interface-member-declarations (§13.2), struct-member-declarations (§11.2), enum-member-declarations (§14.3), accessor-declarations (§10.7.2), event-accessor-declarations (§10.8.1)和形式参数列表(§10.6.1)。
因此,不能为匿名方法(或类)定义任何属性。