पृष्ठभूमि कार्यकर्ता से पास किए गए डेटा का क्या होता है?पृष्ठभूमि कार्यकर्ता से पास किए गए डेटा का क्या होता है?
डाटा पृष्ठभूमि कार्यकर्ता को मुख्य थ्रेड से RunWorkerAsync का उपयोग कर पारित कर दिया है:
backgroundWorker.RunWorkerAsync(myData);
इस पृष्ठभूमि सूत्र में DoWork ईवेंट हैंडलर में प्राप्त होता है:
myData = (Data)e.Argument;
DoWork संसाधित होने के बाद डेटा, यह e.Result का उपयोग कर देता है:
e.Result = myData;
यह प्राप्त होता है मुख्य थ्रेड में RunWorkerCompleted ईवेंट हैंडलर:
myData = (Data)e.Result;
BackgroundWorker धागे के बीच डेटा गुजर की देखभाल कर रही है। मैं पृष्ठभूमि कार्यकर्ता से और उससे बड़ी मात्रा में डेटा पास करने की उम्मीद कर रहा हूं, इसलिए मैं जानना चाहता हूं कि इस स्थानांतरण का ओवरहेड क्या है, और यदि पृष्ठभूमि कार्यकर्ता में बड़ी मात्रा में इन-मेमोरी ऑब्जेक्ट्स को प्रोसेस करने का बेहतर तरीका है। मैं यह भी जानना चाहूंगा कि पृष्ठभूमि थ्रेड में डेटा को थ्रेड-सुरक्षित तरीके से मुख्य थ्रेड से एक्सेस करना संभव है।
संदर्भ के लिए, मैं सी #, नेट 3.5 और विंडोज फॉर्म का उपयोग कर रहा हूं।
+1। –