gpt4 book ai didi

c# - 在多线程 C# 应用程序中检测到 LoaderLock

转载 作者:行者123 更新时间:2023-12-03 04:24:52 25 4
gpt4 key购买 nike

我正在用 C# 编写 WinForms 应用程序。

在应用程序中的某个时刻,我生成一个新的 STA 线程(创建线程,然后 SetApartmentState ),它创建一个新表单,然后用普通的旧 Show() 显示它。 。表单本身只包含一个停靠的 DataGrid谁的DataSource指向DataTable从新打开的 SqlConnection 检索。所有数据和 UI 对象都在同一线程上创建。

当我执行该代码时,我得到 LoaderLock以下(有用的)文本异常(exception):

Attempting managed execution inside OS Loader lock. Do not attempt to run managed code inside a DllMain or image initialization function since doing so can cause the application to hang.

我没有做这样的事,至少不是故意的!堆栈跟踪的头部只有非托管代码,我无法使用 C# Express 2008 对其进行调试。

环顾互联网,人们通常只是在 VisualStudio 中禁用该异常。这是微软的又一个迂腐的例子,还是我应该花时间弄清楚到底发生了什么?

更新 该错误似乎是由于快速打开多个表单(每个表单都有数据网格等)引起的。如果我切换 Show()ShowDialog()并一次查看一个表格,然后错误就会消失。

最佳答案

我以前在使用带有 DLL 的 P/Invoke 时见过这种情况,但该 DLL 的构建不太正确。我认为我们已经确定在我们的特定情况下这并不危险,并且需要花费更多的精力来修复而不是禁用警告。

您的应用程序中有任何 native 代码吗?

关于c# - 在多线程 C# 应用程序中检测到 LoaderLock,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/926947/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com