terça-feira, 6 de dezembro de 2016

C#: Invocar Métodos Asíncronos sem estar dentro de um async

Pesquisando sobre como usar o Microsoft Speech, um framework para sintetizador de voz e comando de voz, aconteceu de que não conseguia uma instância da engine porque o construtor era um método assíncrono, e por eu não estar invocando dentro de um método assíncrono, ocorria uma Exception.

Depois de muita pesquisa, achei uma solução bem simples: criar uma nova thread e invocar nessa o método nessa thread. O caso se assemelha assim:

01. private void iniciarEngine(){
02. 
03. }
04. 
05. public void executar(){
06.    Task.Factory.StartNew(() => { iniciarEngine(); });
07. }

.Na linha 01, temos o método que inicia e qua vai invocar o método assíncrono, e na linha 05 temos o método que vai iniciar a nova thread. A linha 06 resume o que quero: iniciar uma nova thread chamando o método iniciarEngine. E isso resolveu o meu problema.

Nenhum comentário:

Postar um comentário