This documentation is archived and is not being maintained.

Dns.BeginResolve Method

NOTE: This API is now obsolete.

Begins an asynchronous request to resolve a DNS host name or IP address to an IPAddress instance.

Namespace:  System.Net
Assembly:  System (in System.dll)

'Declaration
<ObsoleteAttribute("BeginResolve is obsoleted for this type, please use BeginGetHostEntry instead. http://go.microsoft.com/fwlink/?linkid=14202")> _
<HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading := True)> _
Public Shared Function BeginResolve ( _
	hostName As String, _
	requestCallback As AsyncCallback, _
	stateObject As Object _
) As IAsyncResult
'Usage
Dim hostName As String 
Dim requestCallback As AsyncCallback 
Dim stateObject As Object 
Dim returnValue As IAsyncResult 

returnValue = Dns.BeginResolve(hostName, _
	requestCallback, stateObject)

Parameters

hostName
Type: System.String

The DNS name of the host.

requestCallback
Type: System.AsyncCallback

An AsyncCallback delegate that references the method to invoke when the operation is complete.

stateObject
Type: System.Object

A user-defined object that contains information about the operation. This object is passed to the requestCallback delegate when the operation is complete.

Return Value

Type: System.IAsyncResult
An IAsyncResult instance that references the asynchronous request.

ExceptionCondition
ArgumentNullException

hostName is Nothing.

SocketException

The caller does not have permission to access DNS information.

NoteNote:

The HostProtectionAttribute attribute applied to this type or member has the following Resources property value: ExternalThreading. The HostProtectionAttribute does not affect desktop applications (which are typically started by double-clicking an icon, typing a command, or entering a URL in a browser). For more information, see the HostProtectionAttribute class or SQL Server Programming and Host Protection Attributes.

The asynchronous BeginResolve operation must be completed by calling the EndResolve method. Typically, the method is invoked by the requestCallback delegate.

This method does not block until the operation is complete. To block until the operation is complete, use the Resolve method.

For more information about using the asynchronous programming model, see Calling Synchronous Methods Asynchronously.

NoteNote:

This member emits trace information when you enable network tracing in your application. For more information, see Network Tracing.

The following example uses BeginResolve to resolve a DNS host name to an IPAddress.

Class DnsBeginGetHostByName

    Class RequestState
        Public host As IPHostEntry

        Public Sub New()
            host = Nothing 
        End Sub 'New 
    End Class 'RequestState


    Public Shared Sub Main()
     Try 
        ' Create an instance of the RequestState class. 
        Dim myRequestState As New RequestState()

        ' Begin an asynchronous request for information such as the host name, IP addresses,  
        ' or aliases for the specified URI. 
        Dim asyncResult As IAsyncResult = CType(Dns.BeginResolve("www.contoso.com", AddressOf RespCallback, myRequestState),IAsyncResult)

        ' Wait until asynchronous call completes. 
        While asyncResult.IsCompleted <> True 
        End While

        Console.WriteLine(("Host name : " + myRequestState.host.HostName))
        Console.WriteLine(ControlChars.Cr + "IP address list : ")
        Dim index As Integer 
        For index = 0 To myRequestState.host.AddressList.Length - 1
            Console.WriteLine(myRequestState.host.AddressList(index))
        Next index
        Console.WriteLine(ControlChars.Cr + "Aliases : ")

        For index = 0 To myRequestState.host.Aliases.Length - 1
            Console.WriteLine(myRequestState.host.Aliases(index))
        Next index
    catch e as Exception
            Console.WriteLine("Exception caught!!!")
            Console.WriteLine(("Source : " + e.Source))
            Console.WriteLine(("Message : " + e.Message))
    End Try 
    End Sub 'Main


    Private Shared Sub RespCallback(ar As IAsyncResult)
        Try 
            ' Convert the IAsyncResult object to a RequestState object. 
            Dim tempRequestState As RequestState = CType(ar.AsyncState, RequestState)

            ' End the asynchronous request.
            tempRequestState.host = Dns.EndResolve(ar)
            Catch e As ArgumentNullException
            Console.WriteLine("ArgumentNullException caught!!!")
            Console.WriteLine(("Source : " + e.Source))
            Console.WriteLine(("Message : " + e.Message))
            Catch e As Exception
            Console.WriteLine("Exception caught!!!")
            Console.WriteLine(("Source : " + e.Source))
            Console.WriteLine(("Message : " + e.Message))
        End Try 
    End Sub 'RespCallback
public __gc class DnsBeginGetHostByName
{
public:
   static System::Threading::ManualResetEvent* allDone = 0;
   __gc class RequestState
   {
   public:
      IPHostEntry*  host;
      RequestState()
      {
         host = 0;
      }
   };

   static void RespCallback(IAsyncResult* ar)
   {
      try
      {
         // Convert the IAsyncResult* Object* to a RequestState Object*.
         RequestState* tempRequestState = 
            dynamic_cast<RequestState*>(ar->AsyncState);
         // End the asynchronous request.
         tempRequestState->host = Dns::EndResolve(ar);
         allDone->Set();
      }
      catch (ArgumentNullException* e)
      {
         Console::WriteLine(S"ArgumentNullException caught!!!");
         Console::WriteLine(S"Source : {0}", e->Source);
         Console::WriteLine(S"Message : {0}", e->Message);
      }
      catch (Exception* e)
      {
         Console::WriteLine(S"Exception caught!!!");
         Console::WriteLine(S"Source : {0}", e->Source);
         Console::WriteLine(S"Message : {0}", e->Message);
      }
   }
};

int main()
{
   DnsBeginGetHostByName::allDone = new ManualResetEvent(false);
   // Create an instance of the RequestState class.
   DnsBeginGetHostByName::RequestState* myRequestState = 
      new DnsBeginGetHostByName::RequestState();

   // Begin an asynchronous request for information like host name, IP addresses, or
   // aliases for specified the specified URI.
   IAsyncResult* asyncResult = Dns::BeginResolve(S"www.contoso.com", 
      new AsyncCallback(asyncResult, 
      DnsBeginGetHostByName::RespCallback), 
      myRequestState);

   // Wait until asynchronous call completes.
   DnsBeginGetHostByName::allDone->WaitOne();
   Console::WriteLine(S"Host name : {0}", myRequestState->host->HostName);
   Console::WriteLine(S"\nIP address list : ");
   for (int index=0; index < myRequestState->host->AddressList->Length; index++)
      Console::WriteLine(myRequestState->host->AddressList->Item[index]);
   Console::WriteLine(S"\nAliases : ");
   for (int index=0; index < myRequestState->host->Aliases->Length; index++)
      Console::WriteLine(myRequestState->host->Aliases->Item[index]);
}

Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC

The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

.NET Framework

Supported in: 1.1, 1.0
Obsolete (compiler warning) in 3.5
Obsolete (compiler warning) in 3.5 SP1
Obsolete (compiler warning) in 3.0
Obsolete (compiler warning) in 3.0 SP1
Obsolete (compiler warning) in 3.0 SP2
Obsolete (compiler warning) in 2.0
Obsolete (compiler warning) in 2.0 SP1
Obsolete (compiler warning) in 2.0 SP2

.NET Compact Framework

Supported in: 1.0
Obsolete (compiler warning) in 3.5
Obsolete (compiler warning) in 2.0
Show: