Sfondo
Ho un oggetto che rappresenta una procedura di test che devo eseguire su un prodotto. Questo oggetto può essere utilizzato più volte durante l'esecuzione, a seconda di quante volte l'utente decide di eseguire il test. Ecco dove inizia la sfida del design. Questo oggetto TestProcedure
contiene molti membri che mantengono i loro valori per tutta la durata dell'oggetto.
Quando l'oggetto viene istanziato, i suoi membri hanno bisogno di avere valori iniziali specifici . Quindi, se l'operatore termina il test e decide di riavviarlo, questi membri non hanno più alcun significato. Detto questo ... se non resetto i membri prima di eseguire un altro test, i valori iniziali saranno errati e quindi invalideranno il test.
Invece di reimpostare ogni membro sul valore che dovrebbe essere, ecco cosa sto facendo invece ...
private TestProcedure myProcedure = null;
private CancellationTokenSource myTokenSource = new CancellationTokenSource();
private CancellationToken myToken = CancellationToken.None;
// creates and executes a test procedure
public void Run()
{
// get a new token source
this.myTokenSource = new CancellationTokenSource();
// get a new token
this.myToken = myTokenSource.Token;
// instantiate a new procedure with the token
myProcedure = new TestProcedure(myTokenSource);
// do the work inside the procedure
myProcedure.DoWork();
}
Quindi, quando vedo un problema è che quando l'utente va a creare un rieseguire il test ...% verrà chiamato% co_de, così a sua volta sto solo sovrascrivendo il vecchio oggetto con un nuova istanza . Sento che questo potrebbe non essere il modo corretto di fare le cose. Sento che sto gestendo male la memoria qui.
Domanda
Non è questa una di quelle situazioni in cui dovremmo usare un'istruzione Run
e implementare using
, oppure posso fare a meno di fare le cose come le ho adesso?