Ответ 1
Вы можете использовать SemaphoreSlim (1) для этого, СемафорСлим, созданный с помощью (1), гарантирует, что только один поток может получить блокировку, любые другие потоки, которые пытаются получить блокировку, - будут ждать, пока тот, кто ее получил, отпустите его.
создайте частного участника:
private SemaphoreSlim _syncLock = new SemaphoreSlim(1);
Затем в вашем коде выполните:
async Task BasicProcess() {
await _syncLock.WaitAsync(); //Only 1 thread can access the function or functions that use this lock, others trying to access - will wait until the first one released.
//Do your stuff..
_syncLock.Release();
}