Domanda
che sto facendo
static bool isWorking
{
get { return _isWorking; }
set {
myform.treeView1.Enabled = !value;
_isWorking = value;
}
}
e passando attraverso il debugger mostra ferma alla prima linea set. Dopo aver provato questa linea al posto
set { myform.treeView1.Enabled = !(_isWorking = value); }
Vedo che isWorking è impostato ma non è myform.treeView1.Enabled. Che cosa sta succedendo?
Soluzione
Che cosa si intende per "il debugger mostra si ferma"? E 'forse che myform
è nullo, o myform.treeView1
è nullo?
Non riesco a ricordare il esattamente ordine di valutazione in questo caso, ma potrebbe spiegare i sintomi si sta descrivendo. Sapere perché il debugger "ferma" è fondamentale però. Un'altra possibilità è che si sta cercando di accedere all'interfaccia utente da un thread non-UI, che impedirebbe il compito di Enabled
di funzionare correttamente.
Oh, e vi prego di non utilizzare il seconda versione - incarico come un effetto collaterale è molto, molto raramente una buona idea. L'unico uso idiomatico che so è quando loop con IO:
string line;
while ( (line = reader.ReadLine()) != null)
e considero solo accettabile, perché è abbastanza comune. In questo caso sembra proprio che si potrebbero significa "==" anziché "=".
Altri suggerimenti
A causa (_isWorking = valore) restituisce sempre true. Se si può scrivere:
myform.treeView1.Enabled = !(_isWorking == value);
Funziona come: se isWorking è uguale al valore quindi disattivare TreeView. Ma in voi caso - nessun