Option 3 is the best:
Use Async IO.
, 99% HTTP-.
, Async IO. Windows ( .net framework - ) "" .
, .NET . , Win32 api. (!), # 3:
using System.Net;
class RequestState {
public WebRequest Request { get; set; }
}
static void Main( string[] args ) {
HttpWebRequest request = WebRequest.Create( "http://www.stackoverflow.com" ) as HttpWebRequest;
request.BeginGetResponse(
(asyncResult) => {
var state = (RequestState)asyncResult.AsyncState;
var webResponse = state.Request.EndGetResponse( asyncResult ) as HttpWebResponse;
Debug.Assert( webResponse.StatusCode == HttpStatusCode.OK );
Console.WriteLine( "Got Response from server:" + webResponse.Server );
},
new RequestState { Request = request }
);
Console.WriteLine( "Waiting for response. Press a key to quit" );
Console.ReadKey();
}
EDIT:
.NET " " ThreadPool, , - , .