अपने आवेदन में मैं एक रूप है कि तुल्यकालन प्रक्रिया शुरू है और कारणों की संख्या के लिए मैं केवल एक तुल्यकालन एक समय में चलाने की अनुमति देना चाहते हैं। इसलिए मैं यह बताते हैं कि सिंक कार्य प्रगति पर है मेरी फार्म के लिए एक स्थिर bool क्षेत्र जोड़ा गया है और इतना है कि पहले धागा तुल्यकालन शुरू कर सकता है, लेकिन अगर यह पहले से ही सेट नहीं था सच करने के लिए इस क्षेत्र को स्थापित करने के लिए एक ताला जोड़ दिया है जब यह हर दूसरे धागा चल रहा है कि शुरू करने की कोशिश करेंगे इसे समाप्त कर दिया जाएगा।सी # ताला और कोड विश्लेषण चेतावनी CA2002
मेरे कोड कुछ इस तरह है:
internal partial class SynchronizationForm : Form
{
private static volatile bool workInProgress;
private void SynchronizationForm_Shown(object sender, EventArgs e)
{
lock (typeof(SynchronizationForm))
{
if (!workInProgress)
{
workInProgress = true;
}
else
{
this.Close();
}
}
}
}
यह अच्छी तरह से काम कर रहा है, लेकिन मैं निम्न चेतावनी संदेश प्राप्त हो रहा है, जब मैं अपने प्रोजेक्ट पर कोड विश्लेषण चलाएँ:
CA2002: माइक्रोसॉफ्ट। विश्वसनीयता: 'सिंक्रनाइज़ेशनफॉर्म। सिंक्रनाइज़ेशनफॉर्म_शॉउन (ऑब्जेक्ट, इवेंटआर्ग)' लॉक प्रकार 'टाइप' के संदर्भ पर ताले। मजबूत पहचान के साथ किसी ऑब्जेक्ट के विरुद्ध लॉक के साथ इसे बदलें।
क्या कोई मुझे बता सकता है कि मेरे कोड में क्या गलत है और मैं चेतावनी देने के लिए इसे कैसे सुधार सकता हूं। इसका क्या अर्थ है कि ऑब्जेक्ट की मजबूत पहचान है?
यह सच है, लेकिन "कमजोर पहचान" वाले ऑब्जेक्ट्स को लॉक करना अन्य कारणों से भी अव्यवस्थित है। –