.net - Application Idle - Is this thread-safe? -


this should thread-safe, right? there maybe better way?

imports system.threading  public class applicationidlehelper     private shared lastinputticks long      public shared sub setlastinputtime(dt datetime)         interlocked.exchange(lastinputticks, dt.ticks)     end sub      public shared function getidletime() integer         return (now - new datetime(interlocked.read(lastinputticks))).totalseconds     end function end class 

in application i'm setting lastinputticks value method setlastinputtime in prefiltermessage event. in other threads have check variable. calling getidletime, i'm not sure, if thread-safe or can in trouble.

thank in advance!

your solution looks okay. access variable in question covered interlocked access should fine , don't receive corrupted values in getidletime function.

the thing should aware of may receive old value getidletime function because exchange new value not done. if setlastinputtime , getidletime called more or less @ same time, getidletime function may or may not show updated time.

in case not think there way done better this. overlapping call issue never rid of. nature of multi-threading.


Comments

Popular posts from this blog

html - Outlook 2010 Anchor (url/address/link) -

javascript - Why does running this loop 9 times take 100x longer than running it 8 times? -

Getting gateway time-out Rails app with Nginx + Puma running on Digital Ocean -