.NET WPF MissingMethodException при запуске нового потока

Использование Stored Proc прост в обслуживании и требует меньшего количества развертывания против Использование ORM - это ОО способ, поэтому это хорошо

слышал об этом во многих моих проектах, когда появляются подобные заявления, всегда сложно их решить.

6
задан Keith 1 May 2009 в 20:30
поделиться

5 ответов

JITer генерирует исключение MissingMethodException (как раз вовремя компилятор). Джиттер компилирует код на ассемблер по одному методу за раз. Внутри метода делегата (DisplayNextPicture) есть метод, который вызывает метод, которого нет в библиотеках на целевой машине, и я предполагаю, что на нем работает более старая версия .net. Так как джиттер не может найти способ его взрыва.

Я сталкивался с этим несколько раз, когда собирал на компьютере с установленным VS 2008 и 3.5 SP1, а затем пытался запустить компьютер с установленным только 3.0 . Иногда Microsoft добавляет метод в библиотеки и не обновляет их основные или дополнительные версии. Часто это делается в одном из файлов.

1
ответ дан 9 December 2019 в 20:48
поделиться

У меня была такая же проблема. Я вызывал перегрузку метода Dispatcher.Invoke, которого не было в исполняющейся версии .Net. В MSDN я нашел полезный комментарий о методе, который помог мне, хотя моя проблема была немного другой.

http://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.invoke.aspx

Если вы используете метод Invoke, попробуйте использовать перегрузку с DispatcherPriority в качестве первого аргумента.

1
ответ дан 9 December 2019 в 20:48
поделиться

Я использовал VS2008, .Net 3.5, и у меня возникла аналогичная проблема с запуском потока для службы. Обновление до .Net 3.5 SP1 устранило проблему. Спасибо за вашу помощь, ребята.

3
ответ дан 9 December 2019 в 20:48
поделиться

FWIW, у меня была ошибка P9 system.missingmethodexception, которая приводила к сбою простого приложения на одних машинах, но не на других. Я отследил это до строки «.WaitOne (2000)», которая выполнялась внутри потока. Никогда не вызывает проблем на моей машине, но она точно дает сбой на других машинах, ДАЖЕ ХОТЯ КОД НИКОГДА НЕ ВЫПОЛНЯЕТСЯ! Нить даже не дошла до этой строки. Сбой произошел при запуске программы, что очень расстраивало. У меня даже была попытка «поймать… уловить» проблемную строку кода, и это не помогло. Я перестал использовать AutoResetEvent и использовал переменную и " while (! Signalaled) {Thread.sleep (20);} , что было путаницей, но это сработало ....

2
ответ дан 9 December 2019 в 20:48
поделиться

Я получил исключение System.MissingMethodException при тестировании моего приложения, ориентированного на .NET 3.5, в Windows XP SP3. В итоге я установил Visual Studio 2008 Express, чтобы попробовать скомпилировать приложение с самого начала. Только тогда компилятор выдал мне соответствующую ошибку, оказалось, что метод WaitOne в AutoResetEvent имеет только подпись с двумя параметрами, поэтому мне пришлось переписать:

reset.WaitOne (1000);

в

] reset.WaitOne (1000, true);

Я полагаю, что Microsoft забыла добавить первую перегрузку в выпуск Windows XP .NET 3.5. Потому что он работает и существует в Windows 7. Подумайте.

3
ответ дан 9 December 2019 в 20:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: