سؤال

أنا أعمل على مشروع Compact Framework 2.0 ، وأحاول إطلاق برنامج "B" من داخل برنامج آخر "A" Assect.start. لقد فعلت هذا عدة مرات من قبل ، لكنني أواجه بعض المشكلات الغريبة هذه المرة.

يتم إطلاق البرنامج "B" ، لكنه يسبب مفقودًا ، ويخبرني بشكل أساسي أنه يفتقد مجموعة معينة أشارت إليها. المشكلة هي أن التجميع .dll موجود هناك ، في نفس المجلد مثل البرنامج "B". إذا قمت بالنقر نقرًا مزدوجًا على البرنامج "B" ، فسيتم تشغيله بشكل صحيح دون أي مفقود ، فهو فقط عند إطلاقه مع Process.Set in Program "A" تحدث هذه المشكلة. ليس لدي أدنى فكرة عما يجري هنا. حاولت تعيين خاصية WorkDirectory دون حظ. أي أفكار حول سبب عدم قدرة البرنامج على تحميل مراجعه عند تنفيذها من خلال العملية. تبدأ؟ شكرًا

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();

تعديل لقد فكرت للتو في شيء ... كلا البرنامج "A" وبرنامج "B" استخدم .dll هذا البرنامج "B" لا يتم تحميله. إذا لم يتمكن برنامجان من تحميل نفس .dll في نفس الوقت ، فهذه هي المشكلة. هل هذا هو الحال؟

هل كانت مفيدة؟

المحلول 2

حسنًا ، لقد جعلتها تعمل عن طريق تكرار الكود المشار إليه على تجميع البرنامج B وإزالة جميع المراجع. إنه أبعد ما يكون عن الأنيقة ، لكنني لم أستطع تشغيله بأي طريقة أخرى. إذا كان لدى أي شخص أي فكرة عما قد يكون خطأ ، فسأقدر ذلك كثيرًا. قد يكون مفيدًا في وقت آخر. شكرًا

نصائح أخرى

كيف ينظر ضغط الذاكرة على الجهاز؟ إذا كان البرنامج B يعتمد على التجميع C ، ولكن لا توجد ذاكرة كافية (افتراضية أو فعلية) لتحميل التجميع C ، فستحصل على مفقود مفقود (بدلاً من OutofMemoryException ، والتي اعتقدت دائمًا أنها ستكون أكثر منطقية).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top