2010-09-27 6 views
1

J'essaie d'utiliser une application VB6 consommée dans une application C#. L'application VB6 est une application Winform. Pour ce faire, j'ai modifié l'application VB6 (EXE) en une DLL. Ensuite, je l'ai référencé dans mon application C#. Dans mon application VB, j'ai ajouté une nouvelle classe avec quelques méthodes juste pour ouvrir les formulaires VB.VB6 .NET Interop - Problème de performance

Tout fonctionne très bien ... sauf que si la forme a de nombreux contrôles (30), la fenêtre est extrêmement lent à ouvrir (> 4s tandis que < 1s en VB)

1/Est-ce une bonne méthode?

2/Comment résoudre ce problème?

Cordialement,

Florian

EDIT: Je sais où est le problème, mais je ne sais pas comment le résoudre. La méthode qui est très lente à exécuter contient une douzaine de chaînes sql concaténées par un ";" et la méthode ex: SqlString = "SELECT * FROM CLIENTS, SELECT * FROM ÉDITEURS ..." OpenResultSet (strSelect) est appelé ... un combobox est rempli pour chaque chaîne sql

+0

Comment le formulaire est-il initialisé? Passez-vous beaucoup de données de C# à VB6? –

+0

Non, je ne transmets aucun code de C# à vb6. En C#, j'appelle juste cette méthode: myVBApp.OpenFrmCustomer(); – Florian

Répondre

0

D'après ce que vous avez écrit I examinerait exactement le nombre de lignes/colonnes renvoyées par vos requêtes 'SELECT * FROM XXXX'. SELECT * est généralement considéré comme une mauvaise pratique car il peut avoir des implications de performances massives (et ralentira pour chaque colonne ajoutée à la table dans le futur, même si vous n'avez besoin d'aucune donnée dans cette colonne) et si vous N'avoir aucune clause WHERE votre requête deviendra plus lente chaque jour que les données sont ajoutées à votre table.

Questions connexes