Как ускорить «холодный старт» компонента .NET, вызываемого из приложения VB6 - PullRequest
1 голос
/ 17 июня 2010

У меня есть приложение VB6, которое вызывает форму, вызывая .NET DLL, но проблема в том, что эта форма занимает почти 5 секунд, когда элемент меню выбирается в приложении VB6. Как я могу ускорить это?

Это только медленно в первый раз, после этого это на приемлемой скорости, как будто это нативная форма VB6.

Я думаю, что одним из возможных решений является загрузка формы из .NET DLL во время заставки приложения VB6, но сделать ее невидимой или как-то не отображать ее, а затем, когда будет выбран пункт меню, я сделаю его показать или увидеть.

Какие у меня варианты?

Ответы [ 3 ]

0 голосов
/ 17 июня 2010

Я не знаю точно, в чем проблема, но я бы посоветовал сначала изучить проблему более подробно, используя метод профилирования, чтобы увидеть, какой именно метод занимает столько времени.

Но я думаю, что приложению VB6 нужно загружать в память все виды среды выполнения .NET Dlls ... что занимает все время, вы можете сделать это, загрузив все Dlls при запуске вашей программы - думаю, вызов функции .NET приведет к загрузке библиотеки DLL, поэтому вы можете просто добавить в форму простой метод, который на самом деле ничего не делает, вызвать его во время заставки, и это должно помочь ..

но опять же, это только обоснованное предположение, расследуйте .. используйте sysinternals, чтобы увидеть, какие DLLS загружаются ..

0 голосов
/ 17 июня 2010

Есть несколько небольших вещей, которые вы можете сделать, изменив версии фреймворка> fx3.5, уменьшите размер ваших сборок, уменьшите количество вызовов, которые .net dll делает и запускает NGEN на сборках.

0 голосов
/ 17 июня 2010

Я думаю, это тот факт, что вам нужно загрузить .Net Framework.Вы можете просто добавить фиктивный метод в вашу .Net dll, который на самом деле ничего не делает, и затем вызвать его во время заставки, таким образом, все должно быть уже загружено.

...