Синхронизация с использованием типа System.Threading.Interlocked
System.Threading.Interlocked предоставляет функциональность для потокобезопасного манипулирования одним элементом данных, например:
Decrement() | Безопасно уменьшает значение параметра на 1 |
Exchange() | Безопасно меняет значения двух параметров местами |
Increment() | Безопасно уменьшает значение параметра на 1 |
Синхронизация с использованием атрибута [Synchronization]
Для обеспечения потокобезопасной работы целого класса, он помечается атрибутом [Synchronization]. Класс должен наследовать от ContextBoundObject . Данный подход требует аккуратного использования, поскольку синхронизации подвергаются все члены отмеченного класса, вне зависимости от того, действительно ли это нужно, что может замедлить работу программы.
Использование System.Threading.Timer
void ThreadMethod(object param)
{
}
...
// Создать делегат для выполнения в отдельном потоке
TimerCallback timeCB = new TimerCallback(ThreadMethod);
// Установить настройки таймера.
Timer t = new Timer(
timeCB, // Объект-делегат TimerCallback.
null, // Информация для передачи в вызванный метод
0, // Время перед запуском (в миллисекундах).
1000 // Время между вызовами (в миллисекундах) .
);