En general cuando se trabaja con Threads se utiliza el delegado ThreadStart, que no toma ningun, parametro. Para pasar parametros al Thread la firma de la funcion debe recibir un solo parametro de tipo objet y retornar nada.
Ejemplo:
static void ThreadConParametro(object o){ string info=(string) o; Console.Write(info); Thread.Sleep(10); } //donde se la quiera invocar ParameterizedThreadStart operacion=new ParameterizedThreadStart(ThreadConParametro); Thread hilo=new Thread( operacion); hilo.Start("parametro"); |
Listo!
que es «Operacion»???, deberias pegar el codigo completo para poder entenderlo mejor, o por lo menos la inicializaicon de esa variable =)
ParameterizedThreadStart operacion=new ParameterizedThreadStart(ThreadConParametro);
Operacion es tu objeto que usas para invotar al thread, esta comentado todo
y para el caso de 2 o mas parametros y de otro tipo?
Pasale todos tus parametros dentro del objeto, castea a object pasale y despues volves a castear. Pasale un array o una lista con todos los parametros que necesitas usar
tnks, cree un arreglo con todos y luego los obtengo y los casteo…
la mejor forma es esta
1 public void GetMainTableAsync(string url, int pagesToLoad, string sortBy)
2 {
3 ThreadStart _ts = delegate { GetMainTableAsyncImpl(url, pagesToLoad, sortBy); };
4 Thread mainTableGetter = new Thread(_ts);
5 mainTableGetter.Name = «GetMainTableAsync»;
6 mainTableGetter.Start();
7 }
8
9
10 private void GetMainTableAsyncImpl(string url, int pagesToLoad, string sortBy)
11 {
12 PageRetrieveStarted(url, pagesToLoad);
13 m_resTable = new DataSetSearchResults();
14 MultiPageLoader(url, pagesToLoad, sortBy);
15 }