ThreadStart:
O delegado ThreadStart é definido como void ThreadStart(), o que significa que o método executado não pode ter parâmetros. ThreadStart threadStart=novo ThreadStart(Calculate); Thread thread=novo thread(threadStart); Thread. Start(); Cálculo de nulo público { diâmetro duplo=0,5; Console.Write("A Área do Círculo com Diâmetro de {0} é {1}"Diâmetro, Diâmetro*Math.PI); } Aqui usamos um delegado que define um tipo ThreadStart, que define o método que a thread precisa executar: Calculate, no qual a circunferência de um círculo com diâmetro 0,5 é calculada, e resulta. Isso constitui o exemplo mais simples de multithreading, que em muitos casos é suficiente
ParameterThreadStart: ParameterThreadStart é definido como void ParameterizedThreadStart(estado do objeto), e a função de inicialização da thread definida usando esse delegado pode aceitar um parâmetro de entrada, por exemplo:
ParameterizedThreadStart threadStart=novo ParameterizedThreadStart(Calculate) Thread=novo Thread() ; Thread. Largada (0,9); empty público Calculate(object arg)
{ duplo Diâmetro = duplo(arg); Console.Write("A Área do Círculo com Diâmetro de {0} é {1}"Diâmetro, Diâmetro*Math.PI);
}
O método Calculate tem um parâmetro do tipo objecto, embora haja apenas um parâmetro, e ele também é um tipo de objeto, e ainda precisa ser convertido ao usá-lo, mas felizmente podem existir parâmetros, e combinando múltiplos parâmetros em uma classe e depois passando a instância dessa classe como parâmetro, você pode obter múltiplos parâmetros transferidos. Como o quê:
classe AddParams
{ público int a, b;
AddParams públicos(int numb1, int numb2) { a = numb1; b = numb2; }
} #endregion
Programa da turma
{ Static void Main(string[] args) { Console.WriteLine("***** Adicionando com objetos Thread *****"); Console.WriteLine("ID da thread em Main(): {0}", Thread.ThreadCurrent.GerenciadoThreadId);
AddParams ap = novos AddParams(10, 10); Thread t = nova Thread(nova ParameterizedThreadStart(Add)); t.Start(ap); Console.ReadLine(); }
#region Método de adição static void Add(object data) { if (data is AddParams) { Console.WriteLine("ID da thread em Main(): {0}", Thread.ThreadCurrent.GerenciadoThreadId);
AddParams ap = (AddParams)data; Console.WriteLine("{0} + {1} is {2}", ap.a, ap.b, ap.a + ap.b); } } #endregion
}
} |