PingCompletedEventArgs 类   
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
为 PingCompleted 事件提供数据。
public ref class PingCompletedEventArgs : System::ComponentModel::AsyncCompletedEventArgspublic class PingCompletedEventArgs : System.ComponentModel.AsyncCompletedEventArgstype PingCompletedEventArgs = class
    inherit AsyncCompletedEventArgsPublic Class PingCompletedEventArgs
Inherits AsyncCompletedEventArgs- 继承
示例
下面的代码示例演示如何异步发送 ICMP 回显请求。
using System;
using System.Text;
using System.Net;
using System.Net.NetworkInformation;
using System.ComponentModel;
using System.Threading;
namespace Examples.System.Net.NetworkInformation.PingTest
{
    public class PingExample
    {
        public static void Main (string[] args)
        {
            if (args.Length == 0)
                throw new ArgumentException ("Ping needs a host or IP Address.");
            string who = args[0];
            AutoResetEvent waiter = new AutoResetEvent (false);
            Ping pingSender = new Ping ();
            // When the PingCompleted event is raised,
            // the PingCompletedCallback method is called.
            pingSender.PingCompleted += new PingCompletedEventHandler (PingCompletedCallback);
            // Create a buffer of 32 bytes of data to be transmitted.
            string data = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa";
            byte[] buffer = Encoding.ASCII.GetBytes (data);
            // Wait 12 seconds for a reply.
            int timeout = 12000;
            // Set options for transmission:
            // The data can go through 64 gateways or routers
            // before it is destroyed, and the data packet
            // cannot be fragmented.
            PingOptions options = new PingOptions (64, true);
            Console.WriteLine ("Time to live: {0}", options.Ttl);
            Console.WriteLine ("Don't fragment: {0}", options.DontFragment);
            // Send the ping asynchronously.
            // Use the waiter as the user token.
            // When the callback completes, it can wake up this thread.
            pingSender.SendAsync(who, timeout, buffer, options, waiter);
            // Prevent this example application from ending.
            // A real application should do something useful
            // when possible.
            waiter.WaitOne ();
            Console.WriteLine ("Ping example completed.");
        }
        private static void PingCompletedCallback (object sender, PingCompletedEventArgs e)
        {
            // If the operation was canceled, display a message to the user.
            if (e.Cancelled)
            {
                Console.WriteLine ("Ping canceled.");
                // Let the main thread resume.
                // UserToken is the AutoResetEvent object that the main thread
                // is waiting for.
                ((AutoResetEvent)e.UserState).Set ();
            }
            // If an error occurred, display the exception to the user.
            if (e.Error != null)
            {
                Console.WriteLine ("Ping failed:");
                Console.WriteLine (e.Error.ToString ());
                // Let the main thread resume.
                ((AutoResetEvent)e.UserState).Set();
            }
            PingReply reply = e.Reply;
            DisplayReply (reply);
            // Let the main thread resume.
            ((AutoResetEvent)e.UserState).Set();
        }
        public static void DisplayReply (PingReply reply)
        {
            if (reply == null)
                return;
            Console.WriteLine ("ping status: {0}", reply.Status);
            if (reply.Status == IPStatus.Success)
            {
                Console.WriteLine ("Address: {0}", reply.Address.ToString ());
                Console.WriteLine ("RoundTrip time: {0}", reply.RoundtripTime);
                Console.WriteLine ("Time to live: {0}", reply.Options.Ttl);
                Console.WriteLine ("Don't fragment: {0}", reply.Options.DontFragment);
                Console.WriteLine ("Buffer size: {0}", reply.Buffer.Length);
            }
        }
    }
}
注解
此类的实例将传递到调用 PingCompletedEventHandler 完成时 SendAsync 调用的方法。 方法 SendAsync 以异步方式发送 Internet 控制消息协议 (ICMP) 回显请求,并等待相应的 ICMP 回显回复消息。 属性 Reply 包含 ICMP 回显请求的结果。
属性
| Cancelled | 获取一个值,该值指示异步操作是否已被取消。(继承自 AsyncCompletedEventArgs) | 
| Error | 获取一个值,该值指示异步操作期间发生的错误。(继承自 AsyncCompletedEventArgs) | 
| Reply | 获取包含数据的对象,该数据描述发送 Internet 控制消息协议 (ICMP) 回送请求消息并接受相应的 ICMP 回送答复消息的尝试。 | 
| UserState | 获取异步任务的唯一标识符。(继承自 AsyncCompletedEventArgs) | 
方法
| Equals(Object) | 确定指定对象是否等于当前对象。(继承自 Object) | 
| GetHashCode() | 作为默认哈希函数。(继承自 Object) | 
| GetType() | 获取当前实例的 Type。(继承自 Object) | 
| MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) | 
| RaiseExceptionIfNecessary() | 如果异步操作失败,则引发用户提供的异常。(继承自 AsyncCompletedEventArgs) | 
| ToString() | 返回表示当前对象的字符串。(继承自 Object) |