Advertisement
HaniiPuppy

Running code in event handler rather than after method call.

Mar 30th, 2014
108
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.57 KB | None | 0 0
  1. // This runs code during the raising of an event caused by the calling of a method about to be made,
  2. // rather than before any event handlers or immediately after the method call.
  3.  
  4. // meanings of methods/classes are assumed to be inferred by usage.
  5.  
  6. // makeSomethingHappen = method
  7. // somethingHappened = event
  8. // SomethingHappenedArgs = event args for somethingHappened
  9. // Foo.getFoo() = returns instance of Foo that we're executing the method in.
  10. // EventHandler has an abstract method which runs when the event it's registered to is raised.
  11. // Raising an event calls each of the event handlers registered to the event in the same thread.
  12.  
  13.     public void runCodeWithinMatchingEventHandlerCall()
  14.     {
  15.         final Thread methodThread = Thread.currentThread();
  16.  
  17.         Foo.getFoo().somethingHappened.register(new EventListener<SomethingHappenedArgs>()
  18.         {
  19.             @Override
  20.             public void onEvent(Object Sender, SomethingHappenedArgs Args)
  21.             {
  22.                 if(methodThread == Thread.currentThread();
  23.                 {
  24.                     // Assume that this call of onEvent corresponds to the event raise caused
  25.                     // by the method call that I'm about to make
  26.  
  27.                     // here: run code that is supposed to happen on the event raise caused by
  28.                     // my method call.
  29.  
  30.                     // deregister event immediately after
  31.                     Foo.getFoo().somethingHappened.deregister(this);
  32.                 }
  33.             }
  34.         });
  35.  
  36.         Foo.getFoo().makeSomethingHappen();
  37.     }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement