【发布时间】:2011-10-22 09:10:55
【问题描述】:
我有一个类,它根据在对象状态更改之前引发事件以及在状态更改后引发事件的约定公开可取消事件。发布者(服务器)公开的更改前事件的格式为StateChanging,参数为CancelEventArgs,而更改后的事件格式为StateChanged。这为事件的订阅者(客户端)提供了在操作开始之前取消操作的能力。
现在我更改了其中一项操作,使其成为一项长时间运行的操作,并且我想让订阅者在操作开始后也可以取消操作(并且还可以了解操作进度)。我想到了event-based asynchronous pattern。
问题是我想保留更改前和更改后事件模式,因为它是发布者在某些时候需要操作,而在异步模式中,在我看来是客户端特别要求异步运行某个操作。另一种可能性(但对我来说似乎并不优雅)可能是让服务器公开一个事件(例如OperationRequired),让客户端知道需要在服务器端完成什么并相应地调用RunOperationAsync() 方法.请发表评论并添加您的建议。
【问题讨论】:
标签: c# events asynchronous cancellation