Na verdade, não parece haver muita explicação sobre este assunto, mas os códigos de saída devem ser usados para dar uma indicação de como o tópico saiu, 0
tende a significar que saiu com segurança, enquanto qualquer outra coisa tende a significar que não não saia como esperado. Mas então esse código de saída pode ser definido por você mesmo para ignorar isso completamente.
O link mais próximo que poderia ser útil para obter mais informações é este
Citação do link acima:
Qualquer que seja o método de saída, o inteiro que você retorna de seu processo ou thread deve ter valores de 0 a 255 (8 bits). Um valor zero indica sucesso, enquanto um valor diferente de zero indica falha. Embora você possa tentar retornar qualquer valor inteiro como um código de saída, apenas o byte mais baixo do inteiro é retornado de seu processo ou thread como parte de um código de saída. Os bytes de ordem superior são usados pelo sistema operacional para transmitir informações especiais sobre o processo. O código de saída é muito útil em programas em lote / shell que executam condicionalmente outros programas dependendo do sucesso ou da falha de um deles.
Da documentação para GetEXitCodeThread
Importante A função GetExitCodeThread retorna um código de erro válido definido pelo aplicativo somente depois que o thread termina. Portanto, um aplicativo não deve usar STILL_ACTIVE (259) como um código de erro. Se um encadeamento retornar STILL_ACTIVE (259) como um código de erro, os aplicativos que testam esse valor podem interpretar isso como significando que o encadeamento ainda está em execução e continuar a testar a conclusão do encadeamento após o término do encadeamento, o que pode colocar o aplicação em um loop infinito.
Meu entendimento de tudo isso é que o código de saída não importa muito se você estiver usando threads em seu próprio aplicativo para seu próprio aplicativo. A exceção é possivelmente se você estiver executando algumas threads ao mesmo tempo que dependem umas das outras. Se houver um requisito de uma fonte externa para ler este código de erro, você pode configurá-lo para permitir que outros aplicativos saibam o status do seu thread.
RunAsync().Wait();
static void Main(string[] args) { var t = new Task<object>(() => SomeOp(2)); t.Start(); t.Wait(); }
O fato é que as tarefas são executadas por threads de pool de threads e, com base na heurística do pool de threads, pode não encerrar a thread mesmo depois que sua tarefa for concluída. O encadeamento simplesmente retorna ao pool de encadeamentos aguardando para ser atribuído à próxima tarefa. E é por isso que o código de saída STILL_ACTIVE (259) parece tão intuitivo aqui.Como Sayse mencionou, o código de saída
259 (0x103)
tem um significado especial, neste caso, o processo que está sendo depurado ainda está em execução.Eu vi muito isso com a depuração de serviços da web, porque o thread continua a ser executado após a execução de cada chamada de serviço da web (pois ainda está escutando outras chamadas).
fonte
o que aconteceu comigo é que tenho vários projetos em minha solução. Eu pretendia depurar o projeto 1, no entanto, o projeto 2 foi definido como o projeto inicial padrão. Eu consertei isso, clique com o botão direito no projeto e selecione "Definir como projeto de inicialização" e, em seguida, execute a depuração.
fonte