I want make a dll which has a method like .Send. When this method is called is sends off winsock message to a server, and in return the server responds (this may involve multiple send and receive events). I want to the block the calling application until the whole transaction is complete. I know you can use doevent loops to hold it up, but this still enables the calling application to process things like button clicks and the like. Without going to the winsock api is there any way to do this?