Pergunta

Existe uma maneira de invocar um método em um tópico de segundo plano?

Estou ciente do trabalho de fundo/criando um thread ou uso threadpool.queueUserworkitem etc, mas essa não é a resposta que estou procurando

Por exemplo, o SCSF possui atributos para garantir que o método seja invocado em um pano de fundo ou um tópico da interface do usuário

Eu gostaria de fazer algo semelhante para um pequeno aplicativo e estou procurando um exemplo de trabalho

Foi útil?

Solução

Eu acho que o BackgroundWorker atenderá às suas necessidades. Permite que você execute uma operação em segundo plano em um aplicativo Winform. Esses artigos têm exemplos de trabalho. :)

Outras dicas

Existem muitas maneiras de invocar um método em um tópico de segundo plano.

Você quer bloquear enquanto o método está em execução? Deseja um resultado retornado do método? Deseja que esse resultado seja exibido na interface do usuário? O método é chamado apenas uma vez? Muitas vezes, conforme necessário? Muitas vezes em um loop? Assíncrono? O tópico de segundo plano deve continuar se o seu aplicativo desistir? A resposta para essas perguntas informará qual método você deve usar.

Você pode obter uma visão geral dos vários métodos de passagem de mensagens de thread de um ótimo artigo no projeto do código.

O pool de threads já usa threads de fundo. No entanto, você não tem nenhum controle sobre esses threads. Se você deseja controle, precisará usar o System.Threading.Thread. Isso fornece mais controle sobre como um encadeamento é criado (plano de fundo, primeiro plano, etc.) e gerenciado (suspenda, retomar, dormir, etc.).

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top