Bill Four things architecturally have helped me when using UO - the first couple may be too late but the fourth may be useful:
1. I only use UO to call subroutines. These have a common calling interface so there is a single dispatch point in the client where I can add logging and a despatch routine on the server where I can also add logging. It means some constraints but they can be got round. Also, I've learned the hard way to cut large strings being passed back - the despatch method checks the length of the outgoing argument and has a 'more' flag set to get the rest of it. Cutting to 32k is safest. 2. This approach also means I can use a test rig to check the subroutines independently of the client, which can help identify issues. 3. If I need to watch stuff in real time, I have a global logger that acts as a socket client. I can therefore send stuff to it from both the client and the server to get a complete end to end trace, which saves a lot of time otherwise spent trying to line up client and server logs. 4. Remember that UO.Net calls are single threaded.. so ensure you are using lock{} structures (VB SyncLock) around your calls. .Net may have events interfering with each other. Brian _______________________________________________ U2-Users mailing list U2-Users@listserver.u2ug.org http://listserver.u2ug.org/mailman/listinfo/u2-users