You could generate an event on the host machine from the RT target using VI Server, but I don't believe this would be the most optimal thing to do. VI Server allows for automating VIs across application and computer boundaries as if they were running on the same machine, but it does a lot of abstraction under the hood that makes it a slower communication mechanism than others.
I would strongly recommend using TCP functions. They're a little more complicated, but they will offer you much more in terms of performance, and they're essentially event-based themselves. In other words, your TCP Read function can go to sleep while it waits for incoming messages (events), just like an Event Structure would do. The biggest complication is that TCP functions only operate on string data, so you'll have to flatten your digital data to string on the RT side then unflatten it back to digital data on the host side. Check the Example Finder for TCP examples (just search for TCP or browse to the Networking section).
If you are using Shared Variables, then there's no way to have an event telling you when new data is arriving. You have to continually poll the shared variables for new data. You can tell the old data from the new data, however, by comparing the timestamp output from the previous timestamp. Hope this helps!
Jarrod S.
National Instruments