RUTHAN: Pokud jsi ve stádiu, že tápeš, proč bys měl synchronizační mechanismy používat, tak doporučuju třeba
https://msdn.microsoft.com/en-us/magazine/jj863136.aspx (včetně části 2). Nepropadni ale pak zoufalství - pokud neprogramuješ pro ARM, tak to není tak zlý :) Obecně ale nejjednodušší je nemít žádný sdílený stav mezi více vlákny. Pokud potřebuješ něco sdílet, tak můžeš používat třídy k tomu určené (třeba Interlocked, ConcurrentDictionary). No a pokud ani tohle nepomůže, tak je jsou tu synchronizační primitiva (lock, ReadWriteObjectLock(Slim), Monitor, apod). Reálně ti asi bude stačit jen ten lock.