c# - एप और पृष्ठभूमि एजेंट के बीच साझा आइसोस्टोरेज डेटा की रक्षा करना



windows-phone-7 mutex (1)

एक म्यूटक्स एकाधिक प्रक्रियाओं में लॉक कर सकता है। यह विंडोज फोन में उपयोगी होगा यदि आपके पास कोई शेड्यूल किया गया कार्य है जिसके लिए किसी संसाधन के लिए अनन्य एक्सेस की आवश्यकता होती है। प्रक्रियाओं में एक म्यूट एक्स लॉक करने के लिए म्यूट एक्स को एक नाम दिया जाना चाहिए।

एक मॉनिटर केवल एक प्रक्रिया के भीतर लॉक कर सकता है

म्यूट एक्स उदाहरण:

फ़ोन ऐप कार्य:

public class DatabaseService
{
  private Mutex _mut=new Mutex("mutex control",false);
  public void AddToDatabase(DbObject row)
  {
    mut.WaitOne();
    SaveRow(row);
    mut.ReleaseMutex();
  }
}

अनुसूचित कार्य वर्ग:

public class ResourceUtilisation
{
  private Mutex _mut=new Mutex("mutex control",true);
  //.. does stuff
  private static void UseResource()
  {
    // Wait until it is safe to enter.
    _mut.WaitOne();

    //Go get dataabse and add some rows
    DoStuff();

    // Release the Mutex.
    _mut.ReleaseMutex();
  }
}

उपर्युक्त उदाहरण में हम केवल एक ऐप को एक समय में स्थानीय डेटाबेस संसाधन तक पहुंच सकते हैं। यही कारण है कि हम म्यूटक्स का उपयोग करेंगे।

मॉनिटर उदाहरण (लॉक सिंटैक्स के प्रयोग से):

फ़ोन ऐप कार्य:

public class DatabaseService
{
  private object _locker=new object();
  public void AddToDatabase(DbObject row)
  {
    lock(_locker)
        SaveRow(row);
  }
}

अनुसूचित कार्य वर्ग:

public class ResourceUtilisation
{
  private object _locker=new object();
  //.. does stuff
  private static void UseResource()
  {

    //Go get dataabse and add some rows
    lock(_locker)
        DoStuff();
  }
}

इस उदाहरण में हम एक से अधिक एप्लिकेशन थ्रेड को SaveRow में डाल सकते हैं और हम DoStuff विधि में प्रवेश करने से एक से अधिक अनुसूचितटॉक थ्रेड को रोक सकते हैं। मॉनिटर के साथ हम क्या नहीं कर सकते हैं यह सुनिश्चित करना है कि केवल एक धागा एक बार स्थानीय डीबी तक पहुंच रहा है।

यह मूल रूप से अंतर है मॉनिटर म्यूट एक्स के मुकाबले ज्यादा तेज़ है

अग्रभूमि एप और पृष्ठभूमि एजेंटों के बीच एमएसडीएन संचार के अनुसार पृथक भंडारण में फ़ाइलों के माध्यम से एक म्यूट एक्स द्वारा संरक्षित होना चाहिए।

एकमात्र लेख मुझे मिल सकता है जो बताता है कि यह कैसे करना है यह डिना बेरी द्वारा एक है। हालांकि, वह केवल म्यूटक्स के साथ पढ़ता है और नहीं लिखने की रक्षा करता है।

ऐसा करने का सही तरीका क्या है?





background-agent