Форум программистов, компьютерный форум, киберфорум
C# Windows Forms
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
8 / 8 / 2
Регистрация: 21.01.2015
Сообщений: 34

Где-то иногда вызывается Control.Dispose

16.05.2016, 18:37. Показов 697. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Мое приложение открывает некие файлы и все работало безупречно, пока не добавил табы для одновременной работы с несколькими файлами. Код очень большой и на одном документе он работал. Идея такая:
1) Создаем новый таб
2) Вызываем в нем метод LoadFromFile()
3) В LoadFromFile() в BackgroundWorker читается файл. В RunWorkerCompleted этого воркера выполняется метод, который отображает файл.

Так вот, во время работы BackgroundWorker (до вызова RunWorkerCompleted) с вероятностью ~10% вызывается Dispose() этого таба и все дальше летит в тартарары. Что это может быть?

Наработка программы очень большая, я уверенно говорю, что без табов проблемы не было. Отличие только в том, что раньше был один контрол отображения файла, а теперь он берется из текущего таба. В стеке Dispose() что-то подобное: CompanyName.AppName.TabForm+<>c.<.ctor>b __27_3 Control.Dispose => Component.Dispose => <>c.<.ctor>b__27_3

Добавлено через 40 минут
Написал коряво, заню. Вроде решил проблему. У меня таб - наследник Form, я в OnClosing задаю Cancel = true при условии, что вычисления еще идут. Туда он попадает, форма не закрывается и все окей.

Добавлено через 36 минут
Блин. После того, как красиво переписал эту проверку (OnClosing через дизайнер подключил), то при попатке загрузке файлов в количестве в 5 раз большим, чем программа гарантированно падала - в OnClosing ни разу не попало. И, соответственно, не упало.

Добавлено через 1 минуту
Соврал, на 5n + 1 раз туда все таки попало. Буду считать, что проблема устранена, хотя метод считаю костылем.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.05.2016, 18:37
Ответы с готовыми решениями:

Вызывается ли Dispose?
есть disposable объекты, типа stream... так вот вопрос такой если написать вот так например: var serializer = new...

Иногда вызывается не тот поток
Почему иногда(чаще) выводит: Что надо сделать что бы избегать такого варианта? Должен вывожить только:

Часто или иногда вызывается исключение по адресу 0x00007FF82427B760 (sfml-graphics-2.dll) | ошибка в srand(time(0)
С неопределённой вероятностью я получаю ошибку в различных местах моего кода и кода самой библиотеки SFML. Что я только не...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
16.05.2016, 18:37
Помогаю со студенческими работами здесь

Где вызывается окно операции bluetooth?
Где вызывается это окно (см. скрин)? Спасибо.

Какая разница между Web server control, Composite control и User Control
Подскажите, пожалуйста, какая разница между Web server control, Composite control и User Control, а то я ща тут наделаю делов)

Где же ты, Common Dialog Control?
Привет всем! Есть напряг: в XP не вижу Common Dialog компонента. Не подскажете, как действовать, может через API как-то работать (Мне...

Где взять Split Control?
Подскажите, пожайлуста, где взять Split Control, в коллекции M$ не нашел. Необходим для использования в SSTab.

Где найти ActiveX Control Pad???
Народ, где можно скачать ActiveX Control Pad?? На сайте Мелкософта его не нашел!! Произвол и беспредел!!


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru