events vs observer pattern c#