Hi ulogix,
when developing games you have to think different when it comes to events. Since I also do mainly C# business / enterprise applications, I know this can be sometimes frustrating when switching over to less comfort.
Using DGDK.NET you could still declare delegates and events and raise them from the loop, although I wouldn't recommend them since you cannot rely on them, especially because of the fact (as Diggsey stated) that a game has it's own synchronization (frame), so that to be correctly in sync with the main game loop, you should call your methods from inside that loop (maybe using flags, states, ...).
As you have said, 3D games seems to be traditionally developed within a main game loop. That's true and basically every application is build upon that concept, even if it is not always clear. Windows itself is basically a big loop where messages are processed.
Keep in mind that, when it comes to game development, you have to follow some different paths, since performance is one of the biggest factors. Keep your paths short, do not use delegates and event handlers while in game loop (trust me, it's not a good idea, I just already tried that
), make yourself a state handler which tells you in which state you currently are, trigger your own routines instead of using .NET events, and you're on the good side.
Cheers
[ this post expresses my personal view ]