文章插图
四、”魔法”的背后其实这四个Attribute背后并没有什么魔法,“语法糖”而已 。对于Invoker的三个方法(InvokeAsync、FooAsync和BarAsync)针对StartNewActivity扩展方法的调用 。虽然我们并没有指定任何参数,但是编译器在编译后会帮助我们将参数补齐,完整的代码如下所示 。
using System.Diagnostics;using System.Threading.Tasks;public class Invoker{ private readonly ActivitySource _activitySource; public Invoker(ActivitySource activitySource) { _activitySource = Guard.ArgumentNotNull(activitySource, "activitySource"); } public async Task InvokeAsync() { using (_activitySource.StartNewActivity(ActivityKind.Internal, "InvokeAsync", "D:\\Projects\\App\\App\\Program.cs", 40)) { await Task.Delay(100); await FooAsync(); } } private async Task FooAsync() { using (_activitySource.StartNewActivity(ActivityKind.Internal, "FooAsync", "D:\\Projects\\App\\App\\Program.cs", 49)) { await Task.Delay(100); await BarAsync(); } } private Task BarAsync() { using (_activitySource.StartNewActivity(ActivityKind.Internal, "BarAsync", "D:\\Projects\\App\\App\\Program.cs", 58)) { return Task.Delay(100); } }}
经验总结扩展阅读
- 试述羽毛球运动的特点与锻炼价值
- 心理阴毒人的特征
- 烟斗合页什么牌子好?
- 怎么查看qq空间特别关心
- 萨米特抛光瓷砖怎么样?
- 去越南必买的十件东西,值得买的越南特产排名,越买越心动
- 剑南春52度有几种版本_剑南春分几个档次
- 贵州饮食特点
- 无花果一天最多吃几个
- 马超的性格有什么特点