设计具有长时间运行任务的接口
本文关键字:任务 接口 运行 长时间 | 更新日期: 2023-09-27 18:01:04
我即将设计一个接口,其中包含一个触发长时间运行操作的函数。
现在,我不确定我是否应该在接口本身中提供这一点,或者由调用方决定是调用阻塞还是异步。
public interface I {
int PerformTask(); // blocks long time
void PerformTaskAsync(); // returns immediately
event Action OnTaskFinished(int result); // triggers when task is finished
}
我应该在界面中同时使用两种方法,还是选择其中一种?如果是,是哪一个?
这取决于这个接口所在的体系结构。
如果环境是使用必要时解耦客户端的指导方针/实践构建的,请使用阻塞调用。如果环境有预期短延迟的指导方针/实践,请使用异步版本。
如果您可以使用C#5,请考虑PerformTaskAsync返回Task,以便客户端在需要时可以轻松等待完成。