Este artigo é um artigo espelhado de tradução automática, por favor clique aqui para ir para o artigo original.

Vista: 19083|Resposta: 0

[Fonte] ThreadStart e ParameterizedThreadStart são diferentes

[Copiar link]
Publicado em 14/11/2016 10:25:44 | | |
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
}
}




Anterior:.net/c# Rastrear avatares de usuários, pegar avatares QQ
Próximo:.net/c# calcula a idade do carro do motorista
Disclaimer:
Todo software, material de programação ou artigos publicados pela Code Farmer Network são apenas para fins de aprendizado e pesquisa; O conteúdo acima não deve ser usado para fins comerciais ou ilegais, caso contrário, os usuários terão todas as consequências. As informações deste site vêm da Internet, e disputas de direitos autorais não têm nada a ver com este site. Você deve deletar completamente o conteúdo acima do seu computador em até 24 horas após o download. Se você gosta do programa, por favor, apoie um software genuíno, compre o registro e obtenha serviços genuínos melhores. Se houver qualquer infração, por favor, entre em contato conosco por e-mail.

Mail To:help@itsvse.com