Есть такая проблема: начиная с некоторого большого размера кода (например, строк 400-500 в InitializeComponents()) студия |вернее, компилятор) падает со StackOverflowException.
В ncc.exe там стоит специальная обработка: если мы работаем под MS.NET, то выделить бОльший стек (метров 12, кажется).
Вопрос: что за поток выполняет разбор файла на CodeDom (при открытии дизайнера, например). Конкретно имею в виду вызов Source.Parse(ParseRequest request)
Еще вопрос: как этому потоку изменить размер стека?
Таки еще один вопрос: если стек увеличить не удастся, что бум делать?
... << RSDN@Home 1.2.0 alpha 4 rev. 1022>>
Здравствуйте, Сергей Туленцев, Вы писали:
СТ>Таки еще один вопрос: если стек увеличить не удастся, что бум делать?
Ну также и будем делать, как компилятор делает.
Вместо Source.Parse будет thread = System.Threading.Thread(Source.Parse, a_lot_of_stack) + thread.Start() + thread.Join()
Не особо большой overhead на фоне общей задумчивости дизайнера формочек.
... << RSDN@Home 1.2.0 alpha 2 rev. 872>>
Здравствуйте, Блудов Павел, Вы писали:
БП>Здравствуйте, Сергей Туленцев, Вы писали:
СТ>>Таки еще один вопрос: если стек увеличить не удастся, что бум делать?
БП>Ну также и будем делать, как компилятор делает.
БП>Вместо Source.Parse будет thread = System.Threading.Thread(Source.Parse, a_lot_of_stack) + thread.Start() + thread.Join()
БП>Не особо большой overhead на фоне общей задумчивости дизайнера формочек.
Самый умный, да?
Я попробовал. Оно валится на любом размере кода. (правда, я оборачивал содержимое блока try в методе Check).
С твоим предложением, думаю, будет то же. Но надо проверить.
... << RSDN@Home 1.2.0 alpha 4 rev. 1022>>
Здравствуйте, Блудов Павел, Вы писали:
БП>Здравствуйте, Сергей Туленцев, Вы писали:
СТ>>Таки еще один вопрос: если стек увеличить не удастся, что бум делать?
БП>Ну также и будем делать, как компилятор делает.
БП>Вместо Source.Parse будет thread = System.Threading.Thread(Source.Parse, a_lot_of_stack) + thread.Start() + thread.Join()
БП>Не особо большой overhead на фоне общей задумчивости дизайнера формочек.
Был неправ, вспылил.
Теперь хотя бы сам файл Form1.Designer.n открывается (раньше и он падал). Дизайнер же начал падать вообще без предупреждения. Попробуй, может, у тебя лучше получится?
... << RSDN@Home 1.2.0 alpha 4 rev. 1022>>
Здравствуйте, Сергей Туленцев, Вы писали:
СТ> Дизайнер же начал падать вообще без предупреждения. Попробуй, может, у тебя лучше получится?
Попробуй подключаться к отслеживаемому проекту включая при этом как мендежед, так и нэйтив отладку. Тогда будут ловиться неуправляемые исключения.