相关疑难解决方法(0)

使用标准.Net异步模式的优点?

我正在设计一个执行长时间运行任务的类.我想出的第一个设计是:

public TaskHandle DoSomethingAsync(DoSomethingCompleteCallback completedCallback);
public void       CancelDoSomething(TaskHandle handle);
Run Code Online (Sandbox Code Playgroud)

这简单而简洁.但是,我想知道我是否应该将其作为我一直在阅读的标准.Net异步模式之一来实现?

APM:

public IAsyncResult BeginDoSomething(AsyncCallback completedCallback, Object stateObject);
public void         EndDoSomething(IAsyncResult asyncResult);
Run Code Online (Sandbox Code Playgroud)

EAP:

public void  DoSomethingAsync(string param, object userState);
public event DoSomethingCompletedEventHandler DoSomethingCompleted;
Run Code Online (Sandbox Code Playgroud)

IMO这些似乎使界面变得复杂,除了作为其他.Net开发人员可识别的模式之外没有任何实际优势.APM要求客户端代码始终在其completedCallback中调用EndDoSomething(),并且EAP需要单独订阅已完成的事件.

如果有的话,使用我缺少的标准模式有什么好处?

c# design-patterns asynchronous

5
推荐指数
1
解决办法
1427
查看次数

标签 统计

asynchronous ×1

c# ×1

design-patterns ×1