August 25, 2017

I have a struct A:

struct A {
  this () {
      b = new B();
      b.connect(& receive);
  }

  void receive();

}

a thread class

class B : Thread {

   this() {
      onEvent = null;
      super(& run);
   }

   void connect (void delegate eventHandler) {
      onEvent = eventHandler;
   }

   void run() {
       while (true) {
         // ...
         onEvent();
         // ...
       }
   }

   void delegate() onEvent;
}


The result is that receive() is only getting called for the last-most A that was intialized, although run() I've verified is being called on all the right instances of B.

I've tried the exact same set up with std.signals and currying the delegate through a class ReceiveEvent since structs can't receive signals.  The exact same thing happened.

Can't figure this one out...

I've tried passing a void* pointer to A along with the delegate and that did nothing.

Thanks.