Возможно, проблема не возникает в строке, которая выдает исключение.Это может быть просто симптомом того, что произошло раньше.
Исключение System.ExecutionEngineException
выдается, когда CLR обнаруживает , что что-то пошло не так.Это может произойти через некоторое значительное время после возникновения проблемы.Это происходит потому, что исключение обычно является результатом повреждения внутренних структур данных - CLR обнаруживает, что что-то попало в состояние, которое не имеет смысла.Он генерирует неуловимое исключение, потому что продолжать его небезопасно.
Таким образом, у вас может быть какой-то код в какой-то совершенно не связанной части системы, который что-то повреждает, но это становится очевидным только при выполнении этого конкретного фрагмента кода.Код, который вы показали, может быть просто в порядке.(Этого также может и не быть ... Я не вижу ничего очевидного неправильного, но тогда я не очень хорошо знаю управляемые библиотеки DX 9. Я не вижу, какая функция этого метода требует, например, ключевое слово unsafe.)
К сожалению, это означает, что вам нужно начать разыгрывать сеть чуть шире.Практически все, что использует либо небезопасный код, либо COM-взаимодействие, потенциально подозрительно.К сожалению, это будет долгий и утомительный процесс.Один из способов, которым вы можете подойти к этому, - постараться постепенно упростить программу: какой самый маленький фрагмент кода может проиллюстрировать проблему?(Например, если вы поместите код, который вы там показали, в приложение, которое не содержит ничего, кроме простейшего возможного вызова этого метода, все равно произойдет ли сбой?)