Asynchronous Web methods provide an efficient mechanism within ASP.NET Web services for invoking calls to backend Web services without causing precious threads in the process thread pool to block while doing nothing. This approach applies not only to Web services, but also a number of asynchronous I/O operations for accessing streams, making Microsoft® Windows® Sockets calls, performing file I/O, interacting with other hardware devices, calling asynchronous methods. However, it will only work with the implementations of Web methods (Web service requests in other words). The PreRequestHandler approach will work for all types of ASP.NET requests, but it is a bit easier to program with the asynchronous support built into the ASMX handler than it is to program with the PreRequestHandler.