علامات التبويب في العملية الخاصة بهم مع C # و WinForms

تكرار محتمل
   تطبيق نماذج Windows مثل Google Chrome مع عمليات متعددة < br> و    تصميم متعدد العمليات من Chrome/IE8 ، هل يمكن ذلك في صافي؟
   نموذج لتطبيق Multi-process C# مثل Google Chrome </أ>

يتوفر لدى كل من متصفح IE8 ومتصفح Google Chrome عمليات منفصلة لكل علامة تبويب يتم فتحها .

على سبيل المثال ، يمكنك تشغيل IE8 وفتح Yahoo و Google في علامات التبويب الخاصة بها ، وينتهي الأمر بثلاث عمليات تعمل على نظامك:

  • IE8 itself process [master process]
    • Google tab process
    • Yahoo tab process

أنا العب مع فكرة شيء مماثل في C #/WinForms.

خذ مثالاً بسيطًا: لديّ عملية رئيسية تعرض نموذجًا ، ولدي زر في عملية تابعة. كيف يمكننا تقديم الزر من العملية الأخرى إلى النموذج الخاص بي؟

7

2 إجابة

هذا لا يبدو وكأنه فكرة جيدة. عناصر التحكم الشائعة winforms هي في معظم الأحيان غير آمن مؤشر ترابط ، وإعطاء كل عنصر يبدو العملية الخاصة به icky.

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

Update
.Net provides something called an AppDomain that you can use. It's more than a thread, but less than a process. If you have a from with multiple tab pages, you could create a custom control that holds the contents for each tab page and put each custom control in it's own assembly. Then those assemblies can be dynamically loaded into their own AppDomains. From there you should be able to create an instance of the control you want. However, there are certain rules about talking across appdomains, so I don't know that you'd be able to just add that control to a tab page on your form.

1
وأضاف
جويل ، شكرا على الجواب. لن يعمل 1 مؤشر ترابط لكل علامة تبويب ، لأنه يهزم الغرض من وضع الحماية في كل علامة تبويب في العملية الخاصة به ، مما يحول دون تحطم العملية الأصلية أو تجميدها. اطلع على إجابة رايان عن وضع الحماية.
وأضاف المؤلف Judah Himango, مصدر

السبب الذي يجعل Chrome يعطي كل علامة تبويب عملية خاصة به هو وضع الحماية. إذا كانت هناك علامة تبويب واحدة تتصرف بطريقة خاطئة ، فمن غير المرجح أن تؤدي إلى تعطيل المتصفح بأكمله. هل هناك حاجة مماثلة في تطبيقك؟

لاحظ أيضًا أن علامات تبويب المتصفح لا تحتاج إلى مشاركة المعلومات. يوجد علامة التبويب في علامة تبويب ولا تحتاج أي علامة تبويب أخرى إلى الاهتمام بها. هل ينقسم تطبيقك بشكل مماثل؟

0
وأضاف
شكرا على الاجابة. أفهم التعليل الصحيح وراء وضع الحماية. يتم تقسيم تطبيقي بشكل مشابه ، مع علامات التبويب التي لا تحتاج إلى معرفتها عن بعضها البعض ، ويجب ألا يتمكن جميعًا من تعطيل العملية الرئيسية.
وأضاف المؤلف Judah Himango, مصدر