Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Errores y advertencias relacionados con la instrucción
Hay algunos errores relacionados con la instrucción lock y la sincronización de subprocesos:
- CS0185: 'type' no es un tipo de referencia según lo requiera la instrucción lock.
- CS1996: No se puede esperar en el cuerpo de una instrucción lock
- CS9217: Una instrucción lock en un valor de tipo "System.Threading.Lock" no se puede usar en métodos asincrónicos ni expresiones lambda asincrónicas.
Además, el compilador puede generar las siguientes advertencias relacionadas con las instrucciones lock y la sincronización de subprocesos:
- CS9216: Un valor de tipo
System.Threading.Lockconvertido a otro tipo usará probablemente bloqueos no deseados basados en monitores enlockinstrucción.
errores de instrucción lock
- CS0185: 'type' no es un tipo de referencia según lo requiera la instrucción lock.
- CS1996: No se puede esperar en el cuerpo de una instrucción lock
- CS9217: Una instrucción lock en un valor de tipo "System.Threading.Lock" no se puede usar en métodos asincrónicos ni expresiones lambda asincrónicas.
Estos errores indican que el código infringe las reglas relativas a la; lock la instrucción:
- El objeto que se va a
lockcrear debe ser un tipo de referencia. No se permiten tipos de valor. - No se puede usar una expresión
awaiten el ámbito de una instrucciónlock. - La instrucción
lockno se puede usar conasyncmétodos o expresiones lambda. Para este error, puede reemplazar el tipo de objeto bloqueado por otro tipo. La instrucciónlockusa la API de Monitor.
Debe actualizar el código para seguir las reglas de la instrucción lock.
advertencia de bloqueo
- CS9216: Un valor de tipo
System.Threading.Lockconvertido a otro tipo usará probablemente bloqueos no deseados basados en monitores enlockinstrucción.
A partir de C# 13, el lock genera código especializado cuando el objeto de destino es un objeto System.Threading.Lock. El compilador genera esta advertencia cuando se usa un objeto Lock, pero el código convierte su tipo en otra cosa. Por lo tanto, el compilador genera el código de bloqueo general, no el código de bloqueo específico del tipo Lock. Por ejemplo:
object lockObject = new System.Threading.Lock();
lock (lockObject) // CS9216
{
// .. Your code
}
Debe asegurarse de que la variable o expresión representa el tipo del objeto Lock.