pha*_*oni 5 .net c# asynchronous tap abstract
考虑使用一个抽象类来派生各种类型的操作(就可以执行的命令而言)。其中一些操作执行异步(如等待、接收),其他操作执行同步(即在 GUI 上显示某些内容)。目前我在基类中只有一个抽象异步方法:
\n\npublic abstract class Action\n{ \n // ...\n\n /// <summary>\n /// Executes the action type specific routines.\n /// </summary>\n protected abstract Task<ActionResult> ExecuteAsync(); \n}\n
Run Code Online (Sandbox Code Playgroud)\n\n在派生类的重写中,我使用 TaskCompletionSource 进行同步和异步操作。一方面,我喜欢这样一个事实:从调用者的角度来看,它\xe2\x80\x99 是一个统一的接口。但另一方面,我读到,如果代码实际上是同步的,那么假装是异步的,这是错误的 API 设计。我看到的唯一其他选择是有一个额外的同步
\n\nprotected abstract ActionResult Execute();\n
Run Code Online (Sandbox Code Playgroud)\n\n方法和属性
\n\nprotected bool IsAsync { get; };\n
Run Code Online (Sandbox Code Playgroud)\n\n决定调用同步或异步方法。但我不喜欢必须处理两种不同方式来执行单个操作的想法。如果并非所有覆盖都是异步的,抽象异步方法是否有最佳实践?
\n