Como faço para chamar um método no thread principal e encerrar o outro thread?

bv_Martn

Portanto, estou iniciando um thread que classifica uma lista, após a conclusão, ele deve chamar o método 'completedSorting ()' em meu controlador. Agora, temo que apenas chamar o método fará com que o método seja executado na outra thread. Eu sou decentemente bom em C #, mas threading é um novo conceito para mim.

Eu apenas retornaria o thread, mas quando eu executo várias classificações ao mesmo tempo, isso só levará a confuson I reccon, portanto, eu quero que eles chamem o método 'completedSorting'

controlador:

        public void StartAlgorithm(Algorithm algorithm)
        {
            // check listOfArrays
            if (listManager.arrayList.Count == 0)
            {       
                int[] newArray = CreateArray(algorithm.currentListLength);
                listManager.arrayList.Add(newArray);
                listManager.currentBiggestList = newArray.Length;
                Thread thread = new Thread(() => algorithm.SolveAlgorithm(newArray, algorithm));
                thread.Start();

Tipo de bolha:

        public override void SolveAlgorithm(int[] arr, Algorithm algorithm)
        {
            int temp = 0;

            for (int write = 0; write < arr.Length; write++)
            {
                for (int sort = 0; sort < arr.Length - 1; sort++)
                {
                    if (arr[sort] > arr[sort + 1])
                    {
                        temp = arr[sort + 1];
                        arr[sort + 1] = arr[sort];
                        arr[sort] = temp;
                    }
                }
            }
            CompletedAlgorithmLog newlog = new CompletedAlgorithmLog(filteredArray, algorithm);
            this.controller.OnCompletedArray(newlog);

a última linha é onde preciso alterar algum código, reconheço que teria que retornar depois de fazer algo como mainthread => completedSorting, mas não sei exatamente como.

TRS

Use a biblioteca Paralela de Tarefas e use a Continuação de Tarefas

System.Threading.Tasks.Task
.Run(() => 
{
    StartAlgorithm(algorithm);
})
.ContinueWith(()=>{

  CompletedAlgorithmLog newlog = new CompletedAlgorithmLog(filteredArray, algorithm);
            this.controller.OnCompletedArray(newlog);

});

ele executará o agoritmo em um thread diferente do threadpool e, uma vez concluído, executará o código dentro de continueWith.

Este artigo é coletado da Internet.

Se houver alguma infração, entre em [email protected] Delete.

editar em
0

deixe-me dizer algumas palavras

0comentários
loginDepois de participar da revisão

Artigos relacionados

Como faço para encerrar um thread em C ++ 11?

Como posso chamar o método getHandler () de um thread de outro thread?

Como encerrar um thread quando o programa principal termina?

O thread principal é bloqueado ao chamar o método de outro thread

Como faço para ter um thread que exclui de um HashMap e outro que insere?

Como faço para acessar um thread de outro escopo?

Passe um método como argumento para outro método que passa o método passado para o thread std

Passando o método UI Thread para outro thread para chamar em C #

Como faço para chamar um método em um controlador de outro no .NET 4 MVC

Como chamar um método de controle de outro thread

Como faço para chamar um método de classe de outro arquivo em Python?

como faço para chamar um método php em outra classe em outro arquivo?

Como usar um thread para executar outro JFrame enquanto o principal ainda está em execução

Thread C ++: Como passar o parâmetro no thread principal para outro thread com função lambda

Como faço para chamar um método dentro de outro método na classe react Es6

Como posso copiar dados de thread para um array antes de encerrar o thread?

Java: Como faço para capturar InterruptedException em um thread, quando interrompido por outro thread?

Matlab: Como bifurcar outro thread para carregar dados enquanto o thread principal continua fazendo a tarefa principal?

como chamar o método em um componente e ele vai chamar outro método em outro componente?

Como faço para usar InvokeCommandAction para chamar um método meu e passar parâmetros?

Em Swift, como chamar o método com parâmetros no thread principal GCD?

Como encerrar ou suspender um thread Rust de outro thread?

Como faço para armazenar e acessar valores de um deque onde deque está sendo modificado por outro thread?

Como chamar o método da classe principal a partir de outro método da classe principal

Como faço para atrasar um loop for em swift sem interromper o thread principal?

Como passar o objeto do thread principal para outro thread em java

Como faço para enfileirar threads para pausar e executar apenas quando outro thread é executado?

chamar o método de outro thread sem bloquear o thread (ou escrever SynchronizationContext personalizado para thread não IU) C #

Como chamar um método em um thread em execução?

TOP lista

  1. 1

    R Shiny: use HTML em funções (como textInput, checkboxGroupInput)

  2. 2

    UITextView não está exibindo texto longo

  3. 3

    Dependência circular de diálogo personalizado

  4. 4

    Acessando relatório de campanhas na AdMob usando a API do Adsense

  5. 5

    Como assinar digitalmente um documento PDF com assinatura e texto visíveis usando Java

  6. 6

    R Folheto. Dados de pontos de grupo em células para resumir muitos pontos de dados

  7. 7

    Setas rotuladas horizontais apontando para uma linha vertical

  8. 8

    O Chromium e o Firefox exibem as cores de maneira diferente e não sei qual deles está fazendo certo

  9. 9

    Definir um clipe em uma trama nascida no mar

  10. 10

    Por que meus intervalos de confiança de 95% da minha regressão multivariada estão sendo plotados como uma linha de loess?

  11. 11

    Como dinamizar um Dataframe do pandas em Python?

  12. 12

    regex para destacar novos caracteres de linha no início e no fim

  13. 13

    Why isn't my C# .Net Core Rest API route finding my method?

  14. 14

    Como obter a entrada de trás de diálogo em treeview pyqt5 python 3

  15. 15

    Tabela CSS: barra de rolagem para a primeira coluna e largura automática para a coluna restante

  16. 16

    How to create dynamic navigation menu select from database using Codeigniter?

  17. 17

    Como recuperar parâmetros de entrada usando C #?

  18. 18

    Changing long, lat values of Polygon coordinates in python

  19. 19

    Livros sobre criptografia do muito básico ao muito avançado

  20. 20

    Método \ "POST \" não permitido no framework Django rest com ações extras & ModelViewset

  21. 21

    Pesquisa classificada, conte números abaixo do valor desejado

quentelabel

Arquivo