gpt4 book ai didi

c# - 放弃等待的任务,它们是垃圾回收的吗?

转载 作者:行者123 更新时间:2023-12-04 01:04:01 24 4
gpt4 key购买 nike

我有案例:
Screen1 打开 Dialog1,然后 Dialog1 打开 Dialog2,然后 Dialog2 返回结果到Dialog1关闭 Screen1

由于技术原因,我想像这里一样打开每个对话框(它是伪代码,展示想法):

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

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

但有时 Dialog2 可以关闭整个 Screen1 并且不再需要上面的等待。

// somewhere in dialog2
screen1.CloseScreenAndAllDialogs();

我可以在 dialog1_resultdialog2_result 上离开 awaits 吗?
GC会清理它吗? (假设 screen1dialog1-2 的实例是 GC-ed)

最佳答案

这在一般情况下很难回答,因为它归结为任务是否仍然可以从将要说“这是你的结果”的东西到达? - 我们可以不要回答那个。例如,dialog1 是否仍然存在?如果 dialog1 仍可访问且处于事件状态,并且任务仍未完成,则 dialog1_result 仍将可访问且处于事件状态 - 因为存在允许结果的引用链在将来的某个时间设置。然而,反之则不然。该任务不应使对话框保持事件状态(除非有人以某种不寻常的方式使用了异步状态)。

关于c# - 放弃等待的任务,它们是垃圾回收的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67105843/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com