Ciao, sono riuscito a farlo ma è un po' "zozza" come cosa, in particolare visto che dovrò richiamare questa funzione molte volte! Mi serve la massima efficienza possibile e penso che ci sia un largo margine di miglioramento!
Nel mio caso reale non devo generare numeri casuali ma andare a leggere una lista di file dal drive e sputare fuori il path ogni volta che me ne serve uno! Attualmente per "tirare fuori" il singolo path dal thread lo faccio scrivere su una variabile statica pubblica e lo leggo da fuori il thread, ma non mi piace molto come soluzione! Ne esistono di più efficienti?
Ecco il codice che ho usato, basta richiamare prima threadStart() e poi getNext() ogni volta che serve un nuovo valore:
codice:private static ManualResetEvent ThreadEvent = new ManualResetEvent(false); private Thread SampleThread = null; private static Boolean terminateThread = false; public static string singleFile = ""; public void ReadFile() { //normalmente uso la @ prima del path, ho cambiato in C:\\ visto che piace di più al parser del forum foreach (string FilePath in Directory.GetFiles("C:\\", "*.txt", SearchOption.AllDirectories)) { singleFile = FilePath; ThreadEvent.Reset(); ThreadEvent.WaitOne(); if (terminateThread) break; } //Lettura del thread terminata } private void startThread() { SampleThread = new Thread(new ThreadStart(ReadFile)); Thread InstanceCaller = new Thread(new ThreadStart(ReadFile)); InstanceCaller.Start(); } public string getNext() { ThreadEvent.Set(); return singleFile; }