C# 有几个用于网络任务的有用类,例如 TcpClient 和 WebClient。两者都有 BeginX 方法(分别为 BeginConnect 和 BeginGetResponse),根据 MSDN,应该始终跟随 EndX。两者都接受操作完成后调用的委托。
但是,假设我们无法建立连接,因此调用这些方法会引发异常。我应该仍然调用各自的 EndX 方法,还是应该先检查连接是否建立,然后才调用它们?
或者,在以下示例中,我应该使用 OnSocketConnected1 还是 OnSocketConnected2?
static TcpClient m_client;
private static void OnSocketConnected1 (IAsyncResult asynchronousResult)
{
try
{
m_client.EndConnect(asynchronousResult);
}
catch { }
}
private static void OnSocketConnected2(IAsyncResult asynchronousResult)
{
if (m_client.Connected)
{
try
{
m_client.EndConnect(asynchronousResult);
}
catch { }
}
}
static void Main(string[] args)
{
m_client = new TcpClient();
m_client.BeginConnect("http://www.example.com", 555, OnSocketConnected, null);
Console.ReadLine();
}
谢谢