WF Designer повторно размещает System.StackruException
Мне нужна помощь с повторно размещенным дизайнером WF4. Его следует использовать для разработки очень сложного рабочего процесса, но есть ограничения на вложенные действия. (Это около 40 вложенных действий в одной ветке). Если этот предел превышен, в PresentationCore.dll возникла исключительная ситуация System.StackruException.
Есть ли способ, как увеличить лимит для System.StackruException?
Вот пример кода для скачивания. После создания и запуска приложения переместите полосы прокрутки к последнему действию с номером 40, и должно произойти исключение.
2 ответа
Я решил проблему, увеличив размер стека с помощью утилиты EDITBIN из VisualStudio.
editbin /STACK:6291456 "WpfApplication1.exe"
К сожалению, он не работает в VisualStudio, добавляя его в раздел Пост-сборка в свойствах проекта. Поэтому я создал файл bat, который необходимо выполнить после сборки.
Я могу запустить его без ошибок и прокрутить до самого дна - хотя он немного медленный - (64-битный компьютер, 16 ГБ памяти).
Вы можете выделить размер стека при создании нового потока, но я не знаю, как вы могли бы изменить размер для потока пользовательского интерфейса по умолчанию в вашем приложении... и если вы можете, я не уверен, что это будет хорошо идея.
Кроме того, увеличение лимита скрывает только общую проблему - а зачем вам это нужно в первую очередь - кто-нибудь действительно вложит 40 уровней сложности в рабочий процесс? Это было бы совершенно громоздко и невероятно сложно поддерживать. Не может ли логика быть разделена на подпроцессы и т. Д.?