Se TaskName è un attributo di tipo String, allora il confronto è sbagliato: gli oggetti non si confrontano con l'operatore ==, ma usando il metodo equals():


codice:
if ( task1.TaskName.equals(task2.TaskName) ) {
   ...   // uguali
} else {
   ...   // diversi
}

L'operatore == usato con gli oggetti confronta i reference e restituisce true se e solo se i due attributi confrontati puntano entrambi allo stesso identico oggetto (non guarda il contenuto, ma proprio il riferimento).


Ciao.