मैं सी # में धागा सुरक्षित गुण पैदा करने के लिए कोशिश कर रहा हूँ और मुझे यकीन है कि मैं सही रास्ते पर हूँ बनाना चाहते यह प्रतीत होता है के रूप में अगर यह यह करने का सही तरीका नहीं है -,थ्रेड सुरक्षित गुण
हालांकि, इस लेख अन्यथा सुझाव देने के लिए लगता है
http://www.codeproject.com/KB/cs/Synchronized.aspx
क्या किसी के पास एक और अधिक निश्चित उत्तर है?
संपादित करें:
कारण यह है कि मैं इस संपत्ति के लिए मनुष्य/सेटर क्या करना चाहते है b/c मैं वास्तव में यह जब यह सेट किया गया है एक घटना सक्रिय करना चाहते हैं - तो कोड वास्तव में इस तरह हो सकता है -
public class PLTracker
{
public PLEvents Events;
private readonly object AvgBuyPriceLocker = new object();
private double _AvgBuyPrice;
private double AvgBuyPrice
{
get
{
lock (AvgBuyPriceLocker)
{
return _AvgBuyPrice;
}
}
set
{
lock (AvgBuyPriceLocker)
{
Events.AvgBuyPriceUpdate(value);
_AvgBuyPrice = value;
}
}
}
}
public class PLEvents
{
public delegate void PLUpdateHandler(double Update);
public event PLUpdateHandler AvgBuyPriceUpdateListener;
public void AvgBuyPriceUpdate(double AvgBuyPrice)
{
lock (this)
{
try
{
if (AvgBuyPriceUpdateListener!= null)
{
AvgBuyPriceUpdateListener(AvgBuyPrice);
}
else
{
throw new Exception("AvgBuyPriceUpdateListener is null");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.Message);
}
}
}
}
मैं अपने कोड धागा सुरक्षित तो मुझे बताओ अगर मैं पूरी तरह से गलत तरह से इसके बारे में जा रहा हूँ में संकोच न करें बनाने के लिए बहुत नया हूँ!
विल
यह ठीक है। मैं नहीं देखता, आपको ऐसा क्यों लगता है कि यह नहीं है। लिंक्ड एसओ उत्तर यह इंगित नहीं करता है कि ऐसा करने का बुरा विचार है। –
var property = new ConcurrentValue(); संपत्ति। रीडवैल्यू (x => { // इस थ्रेड सुरक्षित मान x } का उपयोग करें); property.WriteValue (() => { // जटिल समय लेने वाली अवरुद्ध गणना वापसी "गणना"; }); } आप संपत्ति मूल्य धारक के रूप में उपयोग करने के लिए एक समवर्ती वैल्यू क्लास बना सकते हैं, विशेष रूप से लिखने और एकाधिक पढ़ने के लिए लॉकिंग कार्यक्षमता के साथ - ऑब्जेक्ट। प्रॉपर्टी। राइट (() => समय लेने वाली गणना) // ऑब्जेक्ट को ब्लॉक करता है। प्रॉपर्टी। रीड (x =>) –