0

Pingクラスを使用していますが、イベント ハンドラSystem.Net.NetworkInformationのイベント関数に文字列データを送信する必要があります。PingCompleted私はこれを試しました:

void ex_ping_PingCompleted(object sender, PingCompletedEventArgs e, string adress)
{

}

...

ex_ping.PingCompleted += (sender1, args) => ex_ping_PingCompleted(sender1, new 
PingCompletedEventArgs(), adress);

PingCompletedEventArgsしかし、コンストラクターがないことがわかります。独自のイベント引数を作成しようとしました:

public class ProgressEventArgs : PingCompletedEventArgs
{
            public string adress;
            public ProgressEventArgs(string ex_adress)
            {
                adress = ex_adress;
            }
}

ここで同じエラー。ping したアドレスを知りたいだけですe.Reply.Address。イベント機能で IP が得られた場合は、サイト名が必要です。

編集:自分でそれを理解しました:

 ex_ping.PingCompleted += (sender1, args) => ex_ping_PingCompleted(sender1, args,adress); 

    void ex_ping_PingCompleted(object sender, PingCompletedEventArgs e,string ex_adress)        {
    }

正常に動作します、/閉じる

4

2 に答える 2

1

イベントを購読する

 ex_ping.PingCompleted += ex_ping_PingCompleted;

そしてハンドラでアドレスを取得します

void ex_ping_PingCompleted(object sender, PingCompletedEventArgs e)
{
   // verify if operation was not canceled or some error occured

   var address = e.Reply.Address;
   IPHostEntry entry = Dns.GetHostEntry(address);
   var siteName = entry.HostName;
}
于 2013-01-29T23:33:13.167 に答える
0

あなたはUserState物件を探しています:

void Ping()
{
    string address = "google.com";
    ex_ping.PingCompleted+=ex_ping_PingCompleted;
    ex_ping.SendAsync(address, 500, buffer, options, address);
}

void ex_ping_PingCompleted(object sender, PingCompletedEventArgs e)
{
    // Will give you the hostname
    var address = e.UserState;
}
于 2015-04-13T06:53:33.907 に答える