c# - Async/await task issue -


i have code , want run in background, can not do. gui frozen until end. error? tried anyway, still do. have code works, not example: s thx!

private relaycommand _jugarcommand;     public relaycommand jugarcommand     {                 {             return _jugarcommand ??                    (_jugarcommand =                        new relaycommand(jugar,                            () => cantidaddesimulaciones != null && regex.ismatch(cantidaddesimulaciones, @"^\d+$")));         }     }      private async void jugar()     {          jugadas = await calcularjugadas();          ganoa += jugadas.count(x => x.quiengano == "jugador a");         ganob += jugadas.count(x => x.quiengano == "jugador b");         empate += jugadas.count(x => x.quiengano == "empate");         jugadasacumuladas += 1;      }      private task<observablecollection<jugada>> calcularjugadas()     {          return task.run(             () =>             {                 var calcularjugadas = new observablecollection<jugada>();                  var numeroaleatorio = new random();                  (var iindex = 1; iindex <= convert.toint16(cantidaddesimulaciones); iindex++)                 {                      var randomnumbera = numeroaleatorio.nextdouble();                     var randomnumberb = numeroaleatorio.nextdouble();                     var queeligioa = queeligio(randomnumbera).tostring();                     var queeligiob = queeligio(randomnumberb).tostring();                      var nuevojuegada = new jugada                     {                         id = iindex,                         numeroaleatorioa = randomnumbera,                         numeroaleatoriob = randomnumberb,                         jugadora = new jugador                         {                             queeligio = queeligioa                         },                         jugadorb = new jugador                         {                             queeligio = queeligiob                         },                         quiengano = quiengano(queeligioa, queeligiob)                     };                      calcularjugadas.add(nuevojuegada);                 }                  return calcularjugadas;             }             );     } 

you not applying concept of async properly. change calcularjugadas async first.

also might want change task.run taskfactory.startnew better multithreading. (note startnew awaitable). function this:

    private async task<observablecollection<jugada>> calcularjugadas() {      return  await taskfactory.startnew(         () =>         {             var calcularjugadas = new observablecollection<jugada>();              var numeroaleatorio = new random();              (var iindex = 1; iindex <= convert.toint16(cantidaddesimulaciones); iindex++)             {                  var randomnumbera = numeroaleatorio.nextdouble();                 var randomnumberb = numeroaleatorio.nextdouble();                 var queeligioa = queeligio(randomnumbera).tostring();                 var queeligiob = queeligio(randomnumberb).tostring();                  var nuevojuegada = new jugada                 {                     id = iindex,                     numeroaleatorioa = randomnumbera,                     numeroaleatoriob = randomnumberb,                     jugadora = new jugador                     {                         queeligio = queeligioa                     },                     jugadorb = new jugador                     {                         queeligio = queeligiob                     },                     quiengano = quiengano(queeligioa, queeligiob)                 };                  calcularjugadas.add(nuevojuegada);             }              return calcularjugadas;         }         ); } 

Comments

Popular posts from this blog

c# - Validate object ID from GET to POST -

node.js - Custom Model Validator SailsJS -

php - Find a regex to take part of Email -