थ्रेड के साथ क्या होता है यदि यह किसी ऑब्जेक्ट में कोई विधि चला रहा है जो किसी ब्लॉक का उपयोग करके मुक्त हो गया था?
उदाहरण:सी # एक थ्रेड के साथ एक प्रयोग() ब्लॉक से बाहर निकलता हुआ अभी भी स्कॉप्ड ऑब्जेक्ट पर चल रहा है
using (SomeObject obj = new SomeObject()) { obj.param = 10 ; Thread newThread = new Thread(() => { obj.Work(); }); newThread.Start(); } ...
obj.Work() एक नया धागा पर चल रहा है लेकिन obj एक IDisposable उद्देश्य यह है कि सामान्य रूप से जब ब्लॉक रास्ते का उपयोग कर जारी किया जायेगा है। यदि ब्लॉक का उपयोग समाप्त होने के बाद धागा चल रहा है तो क्या होता है? थ्रेड पूरा होने के बाद ही वस्तु का निपटान किया जाएगा? या धागा तोड़ देगा?
धन्यवाद।
धागे के बाहर उपयोग कथन रखने के बजाय, इसे थ्रेड के अंदर रखें। थ्रेड newThread = नया थ्रेड (() => { का उपयोग कर (SomeObject obj = नए SomeObject()) { obj.param = 10; obj.Work();} }); newThread.Start(); – Relster