.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

java - WARN : org.springframework.web.servlet.PageNotFound - No mapping found for HTTP request with URI [/board/] in DispatcherServlet with name 'appServlet' -

android - How to create dynamically Fragment pager adapter -

1111. appearing after print sequence - php -