If you changed your application to run in two separate VIs instead of a single one and did not add any synchronization mechanism, I would expect this to happen. Before you possibly had the digital input and digital output synchronized by the data flow of the error cluster.
If your board supported correlated DIO, then you could provide an external clock to synchronize the two tasks together. However, there might be a simpler solution. Why do you need to have your tasks in separate VIs in the first place? If you want to make your code cleaner, you could put the relevant input code and output code in separate subVIs that are called by a main VI.
If you must use separate VIs and they are running on the same PC, then you might want to look into using notifiers as a synchronization mechanism. Refer to the following knowledge base article:
http://digital.ni.com/public.nsf/websearch/B9398355D9550EAF862566F20009DE19?OpenDocument