This approach may seriously hurt the server scalability, because it uses extra theads and blocks the request thread. Suppose Method1..3
are responsible for some IO-bound work. If you can't use async ASP.NET controllers, you still can start an async IO-bound operation with AsyncManager
(e.g., like this) or with PageAsyncTask
(for classic ASP.NET) and avoid blocking.
If however you need to do some CPU-bound work (as opposed to IO-bound work), just do it on the same request thread, step by step, rather than in parallel. Otherwise, each Task.Factory.StartNew
may be putting another incoming HTTP request on hold, depending on the server load. Because you probably want to serve as many concurrent HTTP requests as possible, you should avoid parallelizing CPU-bound work.
That said, your code might be fine for an intranet web app with low number of concurrent HTTP requests. You could do so if you want to speed up the response delivery for an individual request.