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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top