c# - 什么事件表明 UserControl 正在被销毁?

标签 c# .net winforms events asynchronous

我有一个 UserControl 派生控件,它显示从 Web 服务器获取的一些信息。我目前正在使控件异步初始化,以提高响应能力。

在我的 Load 事件处理程序中,我正在创建一个 CancellationTokenSource,并在各种异步调用中使用关联的 token 。

我现在想确保如果用户在异步操作完成之前关闭表单,操作将被取消。换句话说,我想对 token 调用 Cancel。

我正试图弄清楚在哪里可以执行此操作。如果有一个我可以捕获的 Unload 事件,那将是完美的——但没有。事实上,我找不到任何看起来合适的事件。

可以捕获包含 Form 的关闭事件,但我真的想将一切都保留在我的 UserControl 本地。

建议?

最佳答案

我建议 Control::HandleDestroyed事件。当底层 HWnd 被销毁时(通常发生在父窗体关闭时),它会被引发。要在您自己的 UserControl 中处理它,您应该覆盖 OnHandleDestroyed .

此时您可以完全访问控件的属性,因为它还没有被释放。

关于c# - 什么事件表明 UserControl 正在被销毁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12474566/

相关文章:

c# - 使用未分配的局部变量错误将 int var 转换为 string var

C# WinForms 按钮不起作用

c# - DevExpress ComboBoxEdit 数据源

c# - 更改 WPF 数据网格中自动生成的列类型

c# - 在 Xamarin.Forms 中使用 SqlConnection?

c# - 如何将列表转换为 C# 中的 observablecollection?

c# - 如何将 float 作为小时相加,输出小时分秒

.net - 如何使用 CodeDOM 在 AppDomain 中创建和加载程序集?

.net - 存储过程的 MySQL .NET 连接器问题

c# - 使用 .ashx 文件的 Web 表单的 URL 路由