Ciao,
con il thread separato stai trasformando l'esecuzione sincrona in esecuzione asincrona, quindi non avrebbe molto senso bloccare il thread principale per attendere la risposta del thread secondario. Detto questo, se mi dai una buona motivazione per farlo ti rispondo anche a questo

nel tuo caso specifico potresti anche far fare il lavoro del messageBox nel metodo chiamato dal thread secondario (Test(object _data)), ma se non vuoi farlo li, potresti fare un metodo che chiami (sempre dal thread secondario) passando il risultato della condizione, oppure farlo attraverso delegato, condividere una variabile ecc..

insomma se se spieghi meglio cosa devi fare in realtà... se è veramente quello il codice da eseguire allora basta la prima: metti il messageBox dentro Test(object _data).



EDIT :
sono arrivato tardi