我有这个方法来提交对eventstore
的更改,然后在eventstore
更新后发布事件。
我的问题是代码永远不会到达aggregate.MarkChangesAsCommitted
方法和下一个await
。
public async Task CommitChanges()
{
foreach (var aggregate in _trackedAggregates.Values)
{
var newEvents = aggregate.GetChanges();
await _eventStorage.Save(aggregate.Id, newEvents);
aggregate.MarkChangesAsCommitted();
await _eventPublisher.Publish(newEvents);
}
}
活动商店
public Task Save(Guid aId, IEnumerable<IDomainEvent> events)
{
return new Task(() =>
{
using (var stream = _store.OpenStream(aId))
{
foreach (var domainEvent in events)
{
stream.Add(new EventMessage
{
Body = domainEvent
});
}
stream.CommitChanges(Guid.NewGuid());
}
});
}
答案 0 :(得分:2)
new Task()
无法启动任务,您需要调用task.Start()
启动它。 Task.Run
返回已经启动的任务,也称为热门任务。
答案 1 :(得分:0)
更改返回新任务以返回Task.Run,解决了它