none
Dúvida com Thread RRS feed

  • Pergunta

  • Minha dúvida é que estou fazendo um controle de estoque em C# e quando ele vai carregar o Estoque demora um pouco devido ao grande número de items e, consequentemente, o programa acaba travando...li sobre thread mas não consegui encaixar a teoria a pratica. Como funcionam as Threads? e como eu poderia fazer uma para toda vez que fosse carregado a função "CarregarEstoque()" não travasse, mas rodasse em segundo plano? GRATO

    Thiago Rodrigo

    segunda-feira, 20 de maio de 2013 06:09

Respostas

  • Eu hoje uso a TPL(Task Paralel Library). A classe task é uma abstração de operação simultânea. Seria mais ou menos isso:

    Task task = new Task(meu método);

    task.Start();

    Thread thread = new Thread(meu método);

    Conselho. Prefira Task ou invés de Thread. Estude bem essas coisas. Exste muita coisa acontecendo no momento em que se instacia essas classes. Com task você pode criar uma fábrica de tarefas e executar dois métodos da mesma fábrica. Ex:

    TaskScheduler tsc = TaskScheduler .Current;

    TaskFactory tfry = new TaskFactory (tsc, TaskCreationOptions.None,TaskContinuationOption.NotOnFaulted);

    Task task1 = taskFactory.StartNew(meu_metodo);

    Task task2 = taskFactory.StartNew(outro_metodo);

    Isso foi só um pequeno exemplo da TPL, entre muitos outros.

    Estude. Estude. Estude. Esse é o caminho.

    Espero tê-lo ajudado.

    • Marcado como Resposta Thiago Rodrigo quinta-feira, 23 de maio de 2013 03:30
    segunda-feira, 20 de maio de 2013 12:37

Todas as Respostas

  • Eu hoje uso a TPL(Task Paralel Library). A classe task é uma abstração de operação simultânea. Seria mais ou menos isso:

    Task task = new Task(meu método);

    task.Start();

    Thread thread = new Thread(meu método);

    Conselho. Prefira Task ou invés de Thread. Estude bem essas coisas. Exste muita coisa acontecendo no momento em que se instacia essas classes. Com task você pode criar uma fábrica de tarefas e executar dois métodos da mesma fábrica. Ex:

    TaskScheduler tsc = TaskScheduler .Current;

    TaskFactory tfry = new TaskFactory (tsc, TaskCreationOptions.None,TaskContinuationOption.NotOnFaulted);

    Task task1 = taskFactory.StartNew(meu_metodo);

    Task task2 = taskFactory.StartNew(outro_metodo);

    Isso foi só um pequeno exemplo da TPL, entre muitos outros.

    Estude. Estude. Estude. Esse é o caminho.

    Espero tê-lo ajudado.

    • Marcado como Resposta Thiago Rodrigo quinta-feira, 23 de maio de 2013 03:30
    segunda-feira, 20 de maio de 2013 12:37
  • O amigo esclareceu as duvidas sim..Valeu pela resposta

    eu vou estudar. Otimo assunto :D

    Valeu


    Thiago Rodrigo

    quinta-feira, 23 de maio de 2013 03:30