https://dotnetwithwinowandweb.com/2018/09/02/how-delegate-can-be-used-for-callback-in-cwhat-is-asynchronous-delegate/