@ Sprigo -The problem is a race condition. I’m guessing you have the camera connected to the Spider all the time. So, when you power up the device, the camera is seen and the CameraConnected event is fired. When you have the events early in ProgramStarted, you subscribe to them before our host controller finishes initializing the device and you catch the event. When you put them after the Ethernet initialization, too much time has passed and the event already fired so you missed it.
To work around this, you can check the CameraReady property. It returns true when the camera is connected and not currently taking a picture. So if it is true, you can just call StartStreaming as the camera is already connected.
In your sample program, at the bottom of ProgramStarted, I added the following and it worked:
// With these here the events never fire. (Camera2.jpg)
camera.CameraConnected += camera_CameraConnected;
camera.BitmapStreamed += camera_BitmapStreamed;