Zwolnij kontrolkę COM podczas pracy w VB6 IDE

Translate

Część mojej codziennej pracy polega na utrzymywaniu i rozszerzaniu starszych aplikacji VB6. Wspólny silnik jest napisany w C / C ++, a VB6 wykorzystuje te funkcje w celu poprawy wydajności.

Jeśli chodzi o programowanie asynchroniczne, interfejs C nie wystarczy i polegamy na kontrolkach COM do wysyłania zdarzeń do VB6.

Mój problem polega na tym, że kiedy rejestruję formant w VB6, VB ładuje ten formant do pamięci i nie wyładowuje go, dopóki nie wyjdę z VB6 IDE. Ponieważ formant jest ładowany przez cały czas, nie mogę go przekompilować w VC6, ponieważ plik DLL jest zablokowany.

Rozwiązaniem, które znalazłem, nie jest włączenie kontroli w VB, ale użycieCreateObject()z pełną nazwą mojej kontroli. Problem polega na tym, że muszę zadeklarować moją kontrolę jako obiekt, ponieważ VB6 nie wie nic o interfejsie, którego używam, i nie mam dostępu do IntelliSense, co jest uciążliwe.

Masz pomysł, jak mogę powiedzieć VB6, aby zwolnił kontrolki po zamknięciu aplikacji lub bezpośrednio w IDE?

This question and all comments follow the "Attribution Required."

Wszystkie odpowiedzi

Translate

Jestem prawie pewien, że nie ma dobrego sposobu, aby zmusić VB6 do usunięcia kontroli.

Oto, co robię ... zamiast uruchamiać Visual C i Visual Basic obok siebie, uruchamiam VB6podVC:

  1. Załaduj VC
  2. Otwórz projekt zawierający obiekty COM
  3. Edycja, zmiana itp.
  4. W VC ustaw Output Executable na VB6.EXE z odpowiednimi argumentami wiersza poleceń, aby załadować obszar roboczy VB6
  5. Teraz po prostu naciśnij F5, aby uruchomić VB6 IDE i załadować projekt VB6
  6. Jeśli chcesz ponownie zmienić kod COM, zamknij VB6.EXE, wprowadź zmiany i ponownie naciśnij klawisz F5. Tak długo, jak zapiszesz swój obszar roboczy, VB6 zapamięta, jakie okna miałeś otwarte i wszystkie ustawienia projektu.

Zalety tej metody:

  • Możesz ustawić punkty przerwania w obiekcie COM i debugować go przy użyciu pełnego debugera źródła
  • Możesz szczęśliwie debugować w C i VB w tym samym czasie
  • Za każdym razem, gdy VB6 jest uruchomiony, zawsze ma najnowszą wersję bibliotek DLL COM
Źródło