【发布时间】:2019-01-04 11:20:09
【问题描述】:
我实现了一个自定义异步方法构建器,但我有几个问题我找不到合适的答案。
1) 我看到根据我的构建方式(调试/发布),状态机被编译成结构或类。是否可以指示编译器无论如何都要生成一个类?
2) 我看到根本没有调用 void SetStateMachine(IAsyncStateMachine m),尽管在文档中说,如果状态机是一个结构,则应该使用它的盒装版本来调用它。
3) 我将方法构建器设为一个类。我应该把它变成一个结构吗?这方面的最佳做法是什么?
4) 奇怪的是,有时在调用 builder.SetResult 方法之后调用 GetAwaiter。这是正常行为吗?如果我们检查一个Task的反编译版本,我们可以清楚地看到它首先请求一个awaiter,如果awaiter没有完成,它会调用机器状态AwaitOnCompleted/AwaitUnsafeOnCompleted。
环境:.Net Core 2.1
非常感谢!
【问题讨论】:
-
你有代码吗?
-
出于好奇,为什么需要自定义实现?
标签: c# .net-core async-await state-machine