您可以向隐式异步void方法添加属性吗?

时间:2017-07-10 07:54:05

标签: c# asynchronous

由于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()

1 个答案:

答案 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)。

因此,不能为匿名方法(或类)定义任何属性。