RSB will force components to be transient

On Fri, Jun 5, 2009 at 11:51 AM, Jason Meckley <[email protected]>wrote:

>
> 1st I spiked my own console app with simple console.writeline
> messages. this worked, so long as i blocked the instance subscription
> with a ManualResetEvent. didn't care for that too much as i'm blocking
> a thread (no performance gain) and the concept of messaging and a
> console was already provided with the source.
>
> now i'm moving on to a simple winforms app. messaging seems to make
> more sense here because the UI could consume messages and update the
> interface automatically for the user.
>
> here is my setup.
> 1 form, with 2 user controls (Ping and Pong)
> Ping consumes SentToPing messages and Pong consumes SentToPong
> messages.
> When form 1 is shown it tells Ping to send a message to pong
> Pong consumes the message, changes the background color (red, green),
> and replies
> Ping consumes the message, changes the background color (orange, blue)
> and replies
> This continues for 10 iterations, then replies stop.
>
> all is working except:
> the background color does not change.
> no exceptions are thrown.
> I can step through all the code without error.
>
> having zero experience with win form development am I missing
> something?
> code below.
>
> public partial class Main : Form
> {
>        private readonly Ping Ping;
>        private readonly Pong Pong;
>
>        public Main(Ping ping, Pong pong)
>        {
>                Ping = ping;
>                Pong = pong;
>                InitializeComponent();
>                Shown += MainShown;
>        }
>
>        private void MainShown(object sender, EventArgs e)
>        {
>                Controls.Add(Ping);
>                Controls.Add(Pong);
>
>                Ping.Top = 10;
>                Pong.Top = Ping.Height + 20;
>
>                Ping.SendAMessageToPong();
>
>                Shown -= MainShown;
>        }
> }
> public partial class Ping :
>        UserControl,
>        ConsumerOf<SendToPing>
> {
>        private readonly IServiceBus Bus;
>
>        public Ping(IServiceBus bus)
>        {
>                Bus = bus;
>                InitializeComponent();
>        }
>
>        public void Consume(SendToPing message)
>        {
>                var number = message.Number;
>                BackColor = number%2 == 0 ? Color.Orange : Color.Blue;
>
>                Thread.Sleep(500);
>                Bus.Reply(new SendToPong {Number = number + 1});
>        }
>
>        public void SendAMessageToPong()
>        {
>                Bus.Send(new SendToPong {Number = 1});
>        }
> }
>
> public partial class Pong :
>        UserControl,
>        ConsumerOf<SendToPong>
> {
>        private readonly IServiceBus Bus;
>
>        public Pong(IServiceBus bus)
>        {
>                Bus = bus;
>                InitializeComponent();
>        }
>
>        public void Consume(SendToPong message)
>        {
>                var number = message.Number;
>                if (number > 10) return;
>
>                BackColor = number % 2 == 0 ? Color.Red : Color.Green;
>
>                Thread.Sleep(500);
>                Bus.Reply(new SendToPing {Number = number + 1});
>        }
> }
>
> public class StartableForm : IStartable
> {
>        private readonly Main Form;
>
>        public StartableForm(Main form)
>        {
>                Form = form;
>        }
>
>        public void Start()
>        {
>                Application.Run(Form);
>        }
>
>        public void Stop()
>        {
>        }
> }
>
> public class StartableServiceBus : IStartable
> {
>        private readonly IStartableServiceBus Bus;
>
>        public StartableServiceBus(IStartableServiceBus bus)
>        {
>                Bus = bus;
>        }
>
>        public void Start()
>        {
>                Bus.Start();
>        }
>
>        public void Stop()
>        {
>                Bus.Dispose();
>        }
> }
> >
>

--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Rhino Tools Dev" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rhino-tools-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to