Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

243
Visualizações
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 Respostas
Responde à pergunta

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda