我正在发布一个事件(我正在使用Microsoft.Practices.Prism.Events)。 此事件将在其他地方处理。然后我想等到处理之后(我不关心在哪里或谁在哪里)继续编写代码之前,我希望处理程序在我的事件arg中放置一些状态,这样我就可以使用该状态(例如成功打印或在决定下一步做什么之前,没有成功打印。
我是否应该启动一个线程并检查arg.Status(我可以在处理时让订户设置)?
或者,如果订阅者提出另一个事件,说发布完成还是什么?
public void Execute(object parameter)
{
var arg = new PrintCustomerAccountSummaryReportRequestedEventArgument { Customer = _viewModel.Customer, StartDate = _viewModel.ReportStartDate, EndDate = _viewModel.ReportEndDate };
EventManager.Instance.GetEvent<PrintCustomerAccountSummaryReportRequestedEvent>().Publish(arg);
// Wait until something has handled the event
// then continue on and execute code.
}
答案 0 :(得分:0)
您提到的替代方案都是正确的。但是,如果 打印操作 的目比一个网站。
在处理PrintCustomerAccountSummaryReportRequestedEvent
事件后,打印订阅者最终会引发 PrintResult 事件, Print Publisher 将完成通过参数
public Publisher(...)
{
...
PrintResultEvent printResultEvent = this.eventAggregator.GetEvent<PrintResultEvent>();
printResultEvent.Subscribe(PrintResultEventHandler);
}
public void Execute(object parameter)
{
var arg = new PrintCustomerAccountSummaryReportRequestedEventArgument { Customer = _viewModel.Customer, StartDate = _viewModel.ReportStartDate, EndDate = _viewModel.ReportEndDate };
EventManager.Instance.GetEvent<PrintCustomerAccountSummaryReportRequestedEvent>().Publish(arg);
// Wait until something has handled the event
// then continue on and execute code. Result will be handled in following EventHandler.
}
private void PrintResultEventHandler(PrintCustomerAccountSummaryReportRequestedEventArgument result)
{
// Get print result and finish job accordingly.
}
我希望这能帮到你,
问候。