I've noticed that that ArcGis Commands are activated asynchronously. So I supposed that there is a chance to corrupt memory without using thread locks when overriding Enabled void of custom ArcGis command. Am I right?
ArcGIS is just a big single threaded application, all the enabled logic in the core commands and tools runs sequentially every 300ms. Since ArcObjects is blazingly fast it just gives the appearance that it happens all at once because these objects really aren't doing much. If you put complex IO in the enabled logic, you'll start getting wait cursors and sluggish performance which is why Esri recommends against it.