问题似乎是,例如,更新TextBox的操作是否具有绑定到的属性值。如果该属性花费太长时间来生成所述值,那么更新文本框值的线程会自行消失吗? (我不确定这个,只是假设)。这导致了垃圾收集和非托管代码的一些问题。
我认为正在发生的是更新线程死亡,然后我对非托管代码的引用被垃圾收集,但是非托管代码然后执行但是从我的托管代码发送的对象已经被破坏导致我的联合国致命异常管理代码。
以下是与此问题相关的警告: 对类型为“...”的垃圾收集委托进行了回调。这可能会导致应用程序崩溃,损坏和数据丢失。将委托传递给非托管代码时,托管应用程序必须将它们保持活动状态,直到确保它们永远不会被调用为止。
有人可以告诉我如何防止这个问题吗?
答案 0 :(得分:2)
在您的班级中保留代表的参考,以防止它被垃圾收集。
阅读this了解详情或阅读Collected delegate problem
答案 1 :(得分:0)
您是否尝试过使用Binding扩展名的IsAsync属性?
{Binding ZZ, IsAsync=true}
将执行委托放入ThreadPool并在获得结果后返回结果,阻止GUI线程阻塞