更新:以下错误实际上是由于我错过了一个简单的错误。这里唯一真实的信息是疲惫和愚蠢是一个糟糕的组合。
由于我们被迫使用的ODBC驱动程序的某些特定功能,我一直在尝试编写一个直接使用ODBC调用的小应用程序。由于C#2.0是我最熟悉的,所以我一直在使用P / Invoke调用ODBC32.dll。
我最初写的代码是多线程的。但我注意到,只要我跳线程,我就会得到AccessViolationExceptions。例如,当我在一个线程中生成对环境和连接的IntPtr引用,然后尝试在生成Statement(SQLAllocStmt)时在另一个线程中使用这些引用时,它们都会弹出。
我相信我可以解决这个问题,但有一些明显的原因吗?由ODBC32.dll调用分配的非托管内存是否以某种方式绑定到特定线程?
答案 0 :(得分:2)
这取决于:
考虑: