Приложение Silverlight 4 зависает без каких-либо исключений
Я занимаюсь разработкой приложения Silverlight 4 RIA. E сть DataGrid
хранение данных и две кнопки: добавить новый элемент и удалить элемент. После создания нового элемента во второй раз приложение зависает примерно так - я объясню странное поведение ниже.
Сценарий создания нового элемента выглядит следующим образом:
- После нажатия появится дочернее окно. Ссылка на источник данных домена, используемый на странице parrent, передается в дочернее окно в конструкторе.
- Пользователь выбирает файл.
- Файл отправляется на веб-сервис. В ответ веб-служба возвращает некоторые данные из этого файла.
- Новый объект данных создается и вставляется в источник данных домена.
Дочернее окно приводит к зависанию всего приложения только тогда, когда оно вызывается дважды, но первый вызов требует создания объекта. Я могу многократно открывать и закрывать дочернее окно, и все будет работать нормально, пока не произойдет последовательность: open.create -> open.close / open.create. Я пытался отследить все исключения с помощью инструмента VS (alt ctrl e), но их нет.
Точка останова на
private void Application_UnhandledException(object sender, ApplicationUnhandledExceptionEventArgs e)
тоже ничего не показывает. Есть идеи?
2 ответа
Удалите следующее и все будет хорошо.
private void ChildWindow_Closed(object sender, EventArgs e)
{
this.DialogResult = false;
}
И, чтобы оценить немного больше, ChildWindow_Closed - это результат установки DialogResult в первую очередь. Переустановив это, неожиданные вещи случаются.
Я сделал немного больше исследований после того, как вы помогли мне с этим вопросом. Кажется, это ошибка SL4. Это также должно помочь. Тема об этом на SL форумах.
protected override void OnClosed(EventArgs e)
{
base.OnClosed(e);
Application.Current.RootVisual.SetValue(Control.IsEnabledProperty, true);
}