सी # और WinForms के साथ अपनी प्रक्रिया में टैब्स

संभावित डुप्लिकेट
   एकाधिक प्रक्रियाओं के साथ Google क्रोम जैसे विंडोज फॉर्म एप्लिकेशन < br>    क्रोम/आईई 8 बहु-प्रक्रिया डिज़ाइन, क्या यह संभव है नेट?
   मल्टी-प्रोसेस सी # ऐप के लिए नमूना Google क्रोम की तरह </एक>

IE8 और Google क्रोम ब्राउज़र दोनों में खोले गए प्रत्येक टैब के लिए अलग-अलग प्रक्रियाएं हैं।

उदाहरण के लिए, आप आईई 8 लॉन्च करते हैं और याहू और Google को अपने टैब में खोलते हैं, आप अपने सिस्टम पर चल रहे 3 प्रक्रियाओं के साथ समाप्त होते हैं:

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

मैं सी #/विनफॉर्म में एक समान चीज़ के विचार से टकरा रहा हूं।

एक साधारण उदाहरण लें: मेरे पास एक मास्टर प्रक्रिया है जो एक फॉर्म दिखाती है, और मेरे पास एक बच्चे की प्रक्रिया में एक बटन है। हम अन्य प्रक्रिया से बटन को मेरे फॉर्म पर कैसे प्रस्तुत कर सकते हैं?

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, स्रोत

कारण यह है कि क्रोम प्रत्येक टैब को अपनी प्रक्रिया देता है सैंडबॉक्सिंग है। यदि एक टैब गलती से व्यवहार करता है तो पूरे ब्राउज़र को कम करने की संभावना कम होती है। क्या आपके ऐप में ऐसी ही आवश्यकता है?

साथ ही, ध्यान दें कि ब्राउज़र टैब को जानकारी साझा करने की आवश्यकता नहीं है। एक टैब पर क्या है टैब पर है और किसी अन्य टैब को इसकी परवाह करने की आवश्यकता नहीं है। क्या आपका Winforms ऐप समान रूप से विभाजित है?

0
जोड़ा
जवाब के लिए धन्यवाद। मैं सैंडबॉक्सिंग के पीछे वैध तर्क समझता हूं। मेरा ऐप समान रूप से विभाजित है, टैब के साथ जिन्हें एक दूसरे के बारे में जानने की आवश्यकता नहीं है, और सभी को मूल प्रक्रिया को क्रैश करने में सक्षम नहीं होना चाहिए।
जोड़ा लेखक Judah Himango, स्रोत