C'è un modo per far eseguire un delegato su un thread specifico?Richiamare un delegato su un thread specifico C#
Dire che ho:
CustomDelegate del = someObject.someFunction;
Thread dedicatedThread = ThreadList[x];
posso avere uno sfondo coerente lungo filo esecuzione e richiamare i miei propri delegati su di esso ogni volta che ne ho bisogno. Deve essere lo stesso thread ogni volta.
[Edit]
Il motivo per cui voglio che sia in un thread dedicato è ora è che ho inten per eseguire il delegato su di esso e sospendere il filo dopo y
millisecondi, e riprendere il filo quando corro un altro delegato su di esso. Vedo che questo non è possibile Avrò una coda delegato e lascerò che la funzione principale del thread legga ed esegua da essa.
Per chiarire con un esempio concreto, ho un sistema di gioco con un gruppo di thread giocatore. Vorrei che ogni giocatore avesse a disposizione gestori di eventi per eventi di gioco. Se i gestori di eventi impiegano troppo tempo, vorrei essere in grado di mettere in pausa quel particolare giocatore fino al prossimo evento sospendendo il suo thread.
Avendo così un thread dedicato su cui posso eseguire più gestori di eventi, posso mettere in pausa l'IA di un particolare giocatore nel caso in cui sia stato intercettato o abbia impiegato troppo tempo.
Grazie per aver segnalato l'ActionThread, che sembra molto utile. Avevo bisogno di incapsulare un codice esterno su cui ho poco controllo in un thread. Tutto quello che ho è delegato al codice esterno. Se posso assicurare che l'oggetto si trova in un particolare thread, posso "mettere in pausa" quell'oggetto semplicemente sospendendo il thread. Non penso che il threadpool mi permetterà di "mettere in pausa" l'oggetto in modo piacevole. – Raynos
Una parola di avvertimento: è possibile (anche probabile) causare deadlock accidentalmente sospendendo/riprendendo i thread. Se possibile, cambiare il codice esterno. Se ciò non è possibile, allora considera di usare le priorità dei thread invece di sospendere/riprendere. –