ОБНОВЛЕНИЕ: Следующая ошибка была на самом деле из-за простой ошибки, которую я пропустил. Единственное реальное сообщение здесь, что устал и глуп - плохая комбинация.
По причинам, связанным с некоторыми специфическими функциями драйвера ODBC, который мы вынуждены использовать, я пытался написать небольшое приложение, которое напрямую использует вызовы ODBC. Поскольку C # 2.0 - это то, что я знаю больше всего, я делал это с помощью вызовов P / Invoke в ODBC32.dll.
Код, который я написал изначально, был многопоточным. Но я заметил, что, как только я перебираю потоки, я получаю AccessViolationExceptions. Например, когда я генерирую ссылки IntPtr на среду и соединение в одном потоке, а затем пытаюсь использовать их в другом потоке при генерации оператора (SQLAllocStmt), все это всплывает.
Я уверен, что могу обойти это, но есть ли какая-то очевидная причина для этого? Связана ли неуправляемая память, выделенная вызовами ODBC32.dll, с каким-то конкретным потоком?