c# - methods only allowed run in single user -


class lock {     private static bool _islocked = false;     private static object _objlock = new object();      public bool acquirelock()     {         lock (_objlock)         {             if (!_islocked)             {                 _islocked = true;                 return true;             }             else             {                 return false;             }         }     }      public void releaselock()     {         lock (_objlock)         {             _islocked = false;         }     } } 

i have function run in single user, if 1 user run it, other user want run, return them "please try later". want implement lock method. acquirelock return true can run, return false disallow them run. want ask code good?

your code vulnerable exceptions (between acquirelock , releaselock).

possible solutions:

  • implement idisposable on class.
  • write 1 method takes delegate parameter. execute delegate when lock taken.

what want provided monitor.tryenter(...), if still want wrap this:

class mylock {     private static bool _islocked = false;     private static object _objlock = new object();      public bool execute(action a)     {         bool locktaken = false;         try         {                 monitor.tryenter(_objlock , ref locktaken);            if (_locktaken)            {                a();            }         }                 {             if (locktaken)            {              monitor.exit(lockobject);            }         }         return locktaken;      }   }    

Comments

Popular posts from this blog

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -

javascript - firefox memory leak -

Trying to import CSV file to a SQL Server database using asp.net and c# - can't find what I'm missing -