I have just tried this code locally in .Net 4.5 and the service starts and stops correctly for me. I suspect your problem may be around creating the EventLog source.
The method:
EventLog.SourceExists("MySource")
requires that the user running the code must be an administrator, as per the documentation here:
http://msdn.microsoft.com/en-us/library/x7y6sy21(v=vs.110).aspx
Check that the service is running as a user that has administrator privileges.