Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

515
Vistas
Método asíncrono para devolver verdadero o falso en una tarea

Sé que un método async solo puede devolver void o Task . He leído métodos similares para el manejo de excepciones dentro de los métodos async . Y soy nuevo en la programación async , así que estoy buscando una solución sencilla.

Mi método async ejecuta una consulta Sql. Si la consulta fue correcta, debe notificar a la persona que llama con un booleano true y, de lo contrario, un false . Mi método es actualmente un vacío, así que no tengo forma de saberlo.

 private async void RefreshContacts() { Task refresh = Task.Run(() => { try { // run the query } catch { } } ); await refresh; }

Simplemente me gustaría cambiar async a Task para que en mi instrucción catch el método devuelva un false y, de lo contrario, un true .

over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

Parece que solo necesita devolver una Task<bool> y luego:

 private async Task<bool> RefreshContactsAsync() { try { ... } catch // TODO: Catch more specific exceptions { return false; } ... return true; }

Personalmente, no detectaría la excepción, sino que permitiría que la persona que llama verifique la tarea en busca de un estado defectuoso, pero eso es un asunto diferente.

over 4 years ago · Santiago Trujillo Denunciar

0

Cambie la firma del método a Task<bool> . Luego, si su método se declara como asíncrono, puede simplemente devolver un valor bool. Pero como dijo jon skeet, hay otras formas, posiblemente mejores, de manejar su escenario

 private async Task<bool> RefreshContacts() { Task refresh = Task.Run(() => { try { // run the query return true; } catch { return false;} }

PD: Otro problema común que posiblemente tendrá es si tiene un método sin sincronización. Luego puede devolver Task.FromResult(true) así:

 private Task<bool> RefreshContacts() { .... return Task.FromResult(true) }
over 4 years ago · Santiago Trujillo Denunciar

0

Lo siento, pero creo que están engañando a la gente aquí. Consulte el artículo de Microsoft, aquí .

Ejemplo muy simple que muestra cómo podemos devolver un valor (escalar) de tipo bool , int o string desde una tarea.

Estoy publicando el código C# aquí, para la posteridad:

 using System; using System.Linq; using System.Threading.Tasks; public class Example { public static void Main() { Console.WriteLine(ShowTodaysInfo().Result); } private static async Task<string> ShowTodaysInfo() { string ret = $"Today is {DateTime.Today:D}\n" + "Today's hours of leisure: " + $"{await GetLeisureHours()}"; return ret; } static async Task<int> GetLeisureHours() { // Task.FromResult is a placeholder for actual work that returns a string. var today = await Task.FromResult<string>(DateTime.Now.DayOfWeek.ToString()); // The method then can process the result in some way. int leisureHours; if (today.First() == 'S') leisureHours = 16; else leisureHours = 5; return leisureHours; } } // The example displays output like the following: // Today is Wednesday, May 24, 2017 // Today's hours of leisure: 5 // </Snippet >
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda