Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

514
Views
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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!