Pregunta
Estoy haciendo
static bool isWorking
{
get { return _isWorking; }
set {
myform.treeView1.Enabled = !value;
_isWorking = value;
}
}
y paso a paso a través del depurador muestra se detiene en la primera línea de set.Después de probar esta línea en su lugar
set { myform.treeView1.Enabled = !(_isWorking = value); }
Veo que isWorking es el set, pero miformulario.treeView1.Habilitado no está.¿Qué sucede?
Solución
¿Qué entiende usted por "el depurador muestra se detiene"?Es posiblemente el que myform
es null, o myform.treeView1
es null?
No recuerdo el exacto orden de evaluación en este caso, pero podría explicar los síntomas que usted describe.Saber por qué el depurador de "paradas" es crucial, aunque.Otra posibilidad es que usted está tratando de acceder a la interfaz de usuario de un no-subproceso de interfaz de usuario, que evitaría la asignación a Enabled
de funcionar correctamente.
Ah, y por favor, no use su segunda versión - asignación como un efecto secundario es muy, muy rara vez es una buena idea.La única idiomáticas de uso lo que sé es cuando el bucle con IO:
string line;
while ( (line = reader.ReadLine()) != null)
y yo sólo considerar que aceptable porque es bastante común.En este caso lo que realmente se ve como tú podría significa "==" en lugar de "=".
Otros consejos
Debido (_isWorking = valor) devuelve siempre es cierto. Si usted escribiría:
myform.treeView1.Enabled = !(_isWorking == value);
Funciona como: si isWorking es igual al valor, entonces Desactivar treeView. Sin embargo, en caso que - no