Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Chyby a upozornění související se
K příkazu a synchronizaci vláken dochází k několika chybámlock:
- CS0185: Type není referenčním typem požadovaným příkazem lock.
- CS1996: V textu příkazu lock nelze čekat.
- CS9217: Příkaz lock pro hodnotu typu System.Threading.Lock nelze použít v asynchronních metodách nebo asynchronních výrazech lambda.
Kromě toho může kompilátor vytvořit následující upozornění související s lock příkazy a synchronizací vláken:
- CS9216: Hodnota typu
System.Threading.Lockpřevedená na jiný typ bude pravděpodobně používat neúmyslné uzamčení založené na monitorování vlockpříkazu.
Chyby příkazu lock
- CS0185: Type není referenčním typem požadovaným příkazem lock.
- CS1996: V textu příkazu lock nelze čekat.
- CS9217: Příkaz lock pro hodnotu typu System.Threading.Lock nelze použít v asynchronních metodách nebo asynchronních výrazech lambda.
Tyto chyby značí, že váš kód porušuje pravidla týkající se lock příkazu:
- Objekt, který se
lockprávě eduje, musí být odkazovými typy. Typy hodnot nejsou povolené. - Výraz
awaitnelze použít v oborulockpříkazu. - Příkaz
locknelze použít s metodamiasyncani výrazy lambda. U této chyby můžete nahradit typ uzamčeného objektu jiným typem. Příkazlockpoužívá Monitor rozhraní API.
Abyste mohli postupovat podle pravidel lock tohoto příkazu, musíte kód aktualizovat.
upozornění na zámek
- CS9216: Hodnota typu
System.Threading.Lockpřevedená na jiný typ bude pravděpodobně používat neúmyslné uzamčení založené na monitorování vlockpříkazu.
Počínaje jazykem C# 13 generuje lock specializovaný kód, pokud je cílovým objektem System.Threading.Lock objekt. Kompilátor vygeneruje toto upozornění při použití objektu Lock , ale váš kód převede jeho typ na něco jiného. Kompilátor proto vygeneruje obecný kód uzamčení, nikoli kód pro uzamčení specifický pro Lock daný typ. Příklad:
object lockObject = new System.Threading.Lock();
lock (lockObject) // CS9216
{
// .. Your code
}
Měli byste zajistit, aby proměnná nebo výraz představoval typ objektu Lock .