HIGH
csharp/lock-over-async
`lock` over async operations (can't await inside lock) — `SemaphoreSlim`.
**/*.csservice-dotnetstandards/stacks/csharp.md:28Read it in the terminal
The same facts, from the checkout you are already in — no browser, and no network.
$ npx redlinegate explain csharp/lock-over-async
Where this came from
You are most likely here from a review comment. A finding names its rule and, when your repository has told Redline where the standard is published, its address:
Redline/HIGH [csharp/lock-over-async]: … → …/r/csharp/lock-over-async
That second line is written by redline init --docs-url and is empty until an organisation sets one — there is no default, because a link to somebody else's copy of the standard is worse than no link. See Onboard a repository.
In context
The C# (.NET) standard lists this rule with the rest of its stack, in the file a reviewer and an AI assistant both read.
Other HIGH rules in this stack
csharp/ef-n-plus-oneEF Core N+1: navigation properties accessed in loops — `.Include`/projection; and unbounded queries without paging.csharp/multiple-enumeration`IEnumerable` multiple enumeration of LINQ-to-entities queries — materialize once with `ToListAsync`.csharp/datetime-nowDateTime.Now in new code — `DateTimeOffset.UtcNow` / `TimeProvider`.csharp/entity-in-controller-responseEntities returned from controllers — DTOs/records only; entities leak lazy-nav and internal fields.csharp/missing-model-validationMissing model validation at the boundary (`[ApiController]` + data annotations or FluentValidation).csharp/fire-and-forget-task-runFire-and-forget `Task.Run` without exception observation — use hosted services / background queues.