The problem is that multiple instances of SomeEventHandler , so multiple Task values ββare created. The await call only works on one of them, so somewhat randomly the question arises as to whether its DoSomething method ends.
To fix this, you will need await for each Task value created.
if (this.OnSomething != null) { foreach (var d in this.OnSomething.GetInvocationList().Cast<SomeEventHandler>()) { await d(args); } ]
source share