【发布时间】:2010-12-22 21:09:26
【问题描述】:
我有一个显示底层异步对象状态的控件。对象引发事件,这些事件到达表单,在那里它们基本上被排队并最终使用 BeginInvoke 调用。
在释放控件时出现问题。因为事情是异步发生的,这意味着在处理过程中总是有可能事件回调排队,我有时会收到一个 InvalidOperationException(在创建窗口句柄之前无法在控件上调用 Invoke 或 BeginInvoke。)。
这不是我想要的行为。即使控件已被释放,我也希望执行回调(即使这会导致回调中出现异常;这对我来说是一个更有用的异常!)。我想在每个回调中处理已释放的状态行为(如果已释放,通常只是跳过,但有时不会[例如,一个控件记录事件(可选到文件)并且我不想丢失日志数据!]。)。
有没有一种方法可以按我想要的方式工作?我可以自己写一个不脆的吗?
【问题讨论】:
标签: .net winforms asynchronous controls begininvoke