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

238
Views
abandonar las tareas pendientes, ¿son GarbageCollected?

tengo caso:
Screen1 abre Dialog1 , luego Dialog1 abre Dialog2 , luego Dialog2 devuelve el resultado a Dialog1 o cierra Screen1

Por razones técnicas, quiero abrir cada cuadro de diálogo como aquí (es un pseudocódigo, muestra una idea):

 // somewhere in screen1 var dialog1_result = await dialog1.ShowDialogAndAskUser(); // somewhere in dialog1 var dialog2_result = await dialog2.ShowDialogAndAskUser();

Pero a veces, Dialog2 puede cerrar toda la pantalla 1 y las Screen1 anteriores ya no son necesarias.

 // somewhere in dialog2 screen1.CloseScreenAndAllDialogs();

¿Puedo dejar dialog1_result awaits dialog2_result ?
¿GC lo limpiará? (asumiendo que las instancias de screen1 , dialog1-2 son GC-ed)

over 4 years ago · Santiago Trujillo
2 answers
Answer question

0

estas tareas no se abandonan realmente porque se esperan. La pregunta en su caso debería ser " ¿Qué sucederá con una operación asincrónica incompleta? ". Y la respuesta es que este código nunca se procesará mediante GC a menos que el método asíncrono finalice por completo (con o sin excepción). No hay suficiente información para que podamos decir con seguridad. Todo depende de lo que haga CloseScreenAndAllDialogs. Si alguien nunca completa explícitamente el método asíncrono ShowDialogAndAskUser, entonces vivirá y esperará para siempre; el compilador simplemente no puede terminarlo por usted.

over 4 years ago · Santiago Trujillo Report

0

Esto es muy difícil de responder en el caso general, porque se reduce a si la tarea aún se puede alcanzar desde lo que va a decir "aquí está tu resultado". - y no podemos responder a eso. ¿ dialog1 sigue vivo, por ejemplo? si dialog1 aún es accesible y está activo, y la tarea aún está incompleta, entonces dialog1_result aún será accesible y estará activo, porque existe una cadena de referencia para permitir que el resultado se establezca en algún momento futuro . Sin embargo, lo contrario no es cierto; la tarea no debe mantener vivo el diálogo (a menos que alguien haya usado el estado asíncrono de alguna manera inusual).

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!