Указанная приведение не является допустимой ошибкой во время выполнения, но не в отладчике

1

Я просмотрел разные вопросы, но никто из них, похоже, не применим. Это VS2010, работающий в системе Windows 7 64Bit.

Недавно я добавлял код в форму, которая работает в течение нескольких месяцев. Я внес некоторые изменения в событие активации. Внезапно он начал бросать исключение во время выполнения. Не в отладчике. Если я установил отладчик JIT runtime (т.е. system.windows.forms jitDebugging = "true"), ошибка также исчезнет (на моей машине разработки, я предполагаю, потому что она установлена VS2010, но не на клиентской машине)

Конечно, я отказался от своего кода (раскомментировал его), но сообщение об ошибке остается. Поскольку отладчик не вызывает каких-либо исключений, я не знаю, где проблема.

Я попытался включить исключения Common Language Runtime Exceptions, но он все еще не видит никаких ошибок.

Я поместил строки отладки и отправил их в файл. Вызывается событие Activate, но событие Shown, кажется, не вызывается до того, как будет выбрано исключение. У меня нет каких-либо методов для чего-либо, кроме Shown now... но моя отладочная запись не попадает в файл до того, как будет выбрано исключение, поэтому, если проблема в этом методе, я понятия не имею, где.

Полная ошибка, которая отображается:

System.InvalidCastException: Specified cast is not valid.
   at System.Windows.Forms.UnsafeNativeMethods.CoCreateInstance(Guid& clsid, Object punkOuter, Int32 context, Guid& iid)
   at System.Windows.Forms.StringSource..ctor(String[] strings)
   at System.Windows.Forms.TextBox.SetAutoComplete(Boolean reset)
   at System.Windows.Forms.TextBox.OnHandleCreated(EventArgs e)
   at System.Windows.Forms.Control.WmCreate(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.TextBoxBase.WndProc(Message& m)
   at System.Windows.Forms.TextBox.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

[EDIT] Показанный способ:

int shownHeight = -1;
int shownTop = -1;
int ButtonOneTop = -1;
int MagnifiedPanelTop = -1;
int MagnifiedPanelHeight = -1;
int SelectedStateTop = -1;

private void VoiceCommandInput_Shown(object sender, EventArgs e)
{
    _ThisForm = this;
    VoiceTextbox.CharacterCasing = CharacterCasing.Upper; ;
    voiceCommandButton.Focus();
    _ThisForm.Height = MagnifiedPanel.Height + 38;

    keyboardPanel.Top = MagnifiedPanel.Bottom + 2;
    int chkptone = button1.Top;

    shownHeight = _ThisForm.Height;
    _ThisForm.Height = shownHeight + AdvancedButtonsPanel.Height + 10;
    shownTop = _ThisForm.Top;
    ButtonOneTop = chkptone;
    MagnifiedPanelTop = MagnifiedPanel.Top;
    MagnifiedPanelHeight = MagnifiedPanel.Height;
    SelectedStateTop = selectedState.Top;
    AdvancedButtonsPanel.Top = selectedState.Bottom + 20;
    AdvancedButtonsPanel.Visible = true;
    AdvancedButtonsPanel.BringToFront();
    keyboardPanel.Top = AdvancedButtonsPanel.Bottom + 20;

    BKD_buttonPusher.WorkerReportsProgress = true;
    BKD_buttonPusher.WorkerSupportsCancellation = true;
    BKD_buttonPusher.DoWork += new DoWorkEventHandler(this.buttonPusher_DoWork);
    BKD_buttonPusher.RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.buttonPusher_RunWorkerCompleted);


    VoiceTextbox.Focus();
}
  • 0
    Поделись кодом
  • 0
    Я не уверен, какой код поделиться ...? Я не уверен, в чем проблема. Полная форма? Полный Показанный Метод? Что я должен поделиться?
Показать ещё 7 комментариев
Теги:
winforms
visual-studio-2010

1 ответ

2
Лучший ответ

Я вставляю здесь комментарий @hvd, потому что он может помочь кому-то

Быстрый поиск в Google вызывает это, и если вы сделали что-то вроде описанного там (удалили [STAThread] из Main или настроили элементы управления пользовательского интерфейса из фоновых потоков), я могу представить, что он потерпит неудачу, и я также могу представить, что, казалось бы, нерелевантные изменения, такие как прикрепление отладчика, могут настраивать поток тонко по-разному, заставляя его не бросать исключения.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню