Question

Je travaille sur un projet Compact Framework 2.0, et je suis en train de lancer un programme « B » à l'intérieur d'un autre programme « A » en utilisant Process.Start. Je l'ai fait plusieurs fois, mais je suis en cours d'exécution dans certaines questions étranges cette fois-ci.

Programme « B » ne se lance, mais il provoque une MissingMethodException, me disant essentiellement qu'il manque un certain assemblage qu'il a fait référence. Le problème est que l'est l'ensemble .dll là, dans le même dossier que le programme « B ». Si je double-cliquez sur le programme « B », il fonctionne correctement sans MissingMethodException, il est seulement lors de son lancement avec Process.Start dans le programme « A » que ce problème se produit. J'ai absolument aucune idée de ce qui se passe ici. J'ai essayé de définir la propriété WorkingDirectory sans chance. Toutes les idées pour lesquelles le programme ne peut pas charger ses références lorsqu'il est exécuté par Process.Start? Merci

System.Diagnostics.Process proc = new System.Diagnostics.Process();
            ProcessStartInfo startInfo = new ProcessStartInfo(programBFullPath, "argument");

            //I've been changing these two properties, have tried shell execute with both false and true, tried setting working directory and not setting it also
            startInfo.UseShellExecute = false;
            startInfo.WorkingDirectory = programBDirectory;

            proc.StartInfo = startInfo;
            proc.Start();

EDIT Je viens de penser à quelque chose ... Les deux programmes "A" et le programme "B" utiliser le .dll que le programme "B" ne se charge pas. Si deux programmes ne peuvent pas charger le même .dll en même temps, alors que la question est. Est-ce le cas?

Était-ce utile?

La solution 2

Eh bien je l'ai fait travailler en dupliquant le code référencé sur l'ensemble du programme B et enlever toutes les références. Il est loin d'être élégant, mais je ne pouvais pas le faire fonctionner autrement. Si quelqu'un a une idée de ce qui aurait pu aller mal, je serais très heureux. Il pourrait venir une autre fois à portée de main. Merci

Autres conseils

Comment regarder la pression de mémoire sur l'appareil? Si le programme B repose sur l'Assemblée C, mais il n'y a pas assez de mémoire (virtuelle ou physique) à l'assemblage charge C, alors vous aurez un MissingMethodException (au lieu d'un OutOfMemoryException, que je toujours pensé serait plus logique).

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top