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 уровней сложности в рабочий процесс? Это было бы совершенно громоздко и невероятно сложно поддерживать. Не может ли логика быть разделена на подпроцессы и т. Д.?

Другие вопросы по тегам