我有一个控件,用于显示底层异步对象的状态。该对象会触发事件,在表单中排队并最终使用BeginInvoke调用。
当控件被释放时,问题就出现了。由于事情是异步发生的,意味着在释放期间可能会排队事件回调,因此有时会收到InvalidOperationException(无法在控件的窗口句柄创建之前调用Invoke或BeginInvoke)。
这不是我想要的行为。即使控件已被释放,我也希望回调能够执行(即使这会在回调函数中引发异常;对我来说,这是一个更有用的异常!)。我想在每个回调中处理已释放状态的行为(通常只是跳过,但有时不会 [例如,一个控件记录事件(可选地记录到文件中),我不想丢失日志数据!])。
是否有一种方法可以按照我想要的方式工作?我能否自己编写一个不易损坏的方法?
当控件被释放时,问题就出现了。由于事情是异步发生的,意味着在释放期间可能会排队事件回调,因此有时会收到InvalidOperationException(无法在控件的窗口句柄创建之前调用Invoke或BeginInvoke)。
这不是我想要的行为。即使控件已被释放,我也希望回调能够执行(即使这会在回调函数中引发异常;对我来说,这是一个更有用的异常!)。我想在每个回调中处理已释放状态的行为(通常只是跳过,但有时不会 [例如,一个控件记录事件(可选地记录到文件中),我不想丢失日志数据!])。
是否有一种方法可以按照我想要的方式工作?我能否自己编写一个不易损坏的方法?