- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 codeplex 中的 LinqToActiveDirectory,当我使用 DirecotrySource 执行查询时,出现以下错误:
检测到 DisconnectedContext
消息:上下文 0x3c5050' 已断开连接。从当前上下文(上下文 0x3c4f98)释放接口(interface)。这可能会导致损坏或数据丢失。为避免此问题,请确保所有上下文/单元都保持事件状态,直到应用程序完全使用表示存在于其中的 COM 组件的 RuntimeCallableWrappers 完成。
这仅在调试时发生,如果我在方法的最后一个大括号上设置断点并按 F10 完成执行。在没有调试的情况下运行时它按预期工作。另外,如果我在最后一个大括号之前调用 GC.Collect(),我可以安全退出。我不想调用 GC,因为我知道最好让他去做他的工作。
我很乐意知道如何解决这个问题。谢谢,塔米尔。
最佳答案
你在 Release模式下仍然有这个问题,它会在以后导致严重的崩溃或数据损坏,但在 Debug模式下它会触发试图帮助你解决问题的托管调试助手:http://msdn.microsoft.com/en-us/library/2c1czate.aspx
一般来说,问题是 COM 组件通常由特定线程拥有(取决于它支持托管的方式和创建位置)。最常见的情况是,您在后台线程或线程池工作线程上创建了上下文,现在该线程已经消失(这会终止 COM 单元或上下文,从而终止 COM 组件),然后您尝试使用 COM 对象。
最终 System.DirectoryServices 使用 ADSI,它是一组 COM 组件。那么你是在线程之间传递东西,使用并行 LINQ,还是类似的东西?例如:如果您在后台线程上使用延迟执行 LINQ,然后将 IEnumerable 传递给前台线程,则查询的实际执行将发生在前台线程上......但是如果您在其中粘贴 .ToList() ,您将强制在后台线程上进行评估。
请告诉我们这些是否有帮助,如果您正在使用线程,我们可以提供更多指导。
关于c# - 在 LINQ To ActiveDirecory 中检测到 DisconnectedContext,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/996893/
我正在使用 codeplex 中的 LinqToActiveDirectory,当我使用 DirecotrySource 执行查询时,出现以下错误: 检测到 DisconnectedContext 消
我是一名优秀的程序员,十分优秀!