https://medium.com/@ohermans1/achieving-responsive-efficient-operations-with-synchronous-and-asynchronous-programming-in-c-e438a9de1535