2017-11-29 28 views
-2

私はこのプログラムをネットワーク上の特定のサーバに接続する必要がありますが、この場合は8.8.8.8を使用します。接続があれば見やすくするため、接続されている場合は「はい」、そうでない場合は「いいえ」と表示されるラベルがあります。しかし、私はそれを動作させることができません、これは私が使用しているコードです:pingに基づいてラベルテキストを変更するにはどうすればよいですか?

申し訳ありませんが、実際には十分な説明はありませんでした。それは何もしないように見える...ラベルは全く変わることはない。私はVisual Studio 2017と2015で2つの異なるマシンで試しました。私はそれの周りに私の頭を包むことはできません。

private void Form2_Load(object sender, EventArgs e) 
{ 
    timer1.Interval = 4000; 
    timer1.Enabled = true; 
    timer1.Tick += new EventHandler(timer1_Tick); 
    timer1.Start(); 
} 

private void timer1_Tick(object sender, EventArgs e) 
{ 
    Ping ping = new Ping(); 
    PingReply pingStatus = ping.Send(IPAddress.Parse("8.8.8.8")); 

    if (pingStatus.Status == IPStatus.Success) 
    { 
     label6.Text = "yes"; 
     label6.ForeColor = Color.Blue; 
    } 

    else 
    { 
     label6.Text = "no"; 
     label6.ForeColor = Color.Red; 
    } 
} 

編集:!変更=

+1

「しかし、私はそれを動作させることができません」というのは、問題の説明的な説明ではありません。あなたはデバッグしましたか? – john

+0

[正常に動作します](https://imgur.com/a/2HhwB)。 Form2_Load(...)はリンクされて呼び出されていますか? – john

+0

申し訳ありませんが、それは十分に説明的ではありませんでした。それは何もしないように見える...ラベルは全く変わることはない。私はVisual Studio 2017と2015で2つの異なるマシンで試しました。私はそれの周りに私の頭を包むことはできません。 –

答えて

-1

を==ためにあなたは、次のようなものを試してみたくなるでしょう。

private void Form2_Load(object sender, EventArgs e) 
    { 

     timer1.Interval = 4000; 
     timer1.Enabled = true; 
     timer1.Tick += new EventHandler(timer1_Tick); 
     timer1.Start(); 
    } 
    private void timer1_Tick(object sender, EventArgs e) 
    { 
     string Address = "8.8.8.8"; 
     PingHost(Address); 
    } 
    public bool PingHost(string Address) 
    { 
     bool Canping = false; 
     Ping ping = new Ping(); 
     try 
     { 
      PingReply reply = ping.Send(Address);    
      label6.Text = reply.Status.ToString(); 
      label6.ForeColor = Color.Blue; 
     } 
     catch (PingException e) 
     { 
      label6.Text = e.ToString(); 
      label6.ForeColor = Color.Red; 
     } 
     return Canping; 
    } 

このようにしてNetworkInformationを使用すると、より良い返品を処理できます。

しかし、このチェックを4秒ごとに行うのは、パフォーマンス上のノックが発生する可能性があるため、最良の方法ではないかもしれませんが、これはアプリケーションが必要とするものと、

EDIT

OPコードは動作しますが、これを処理するには、この多分、より効率的な方法を行います。

+0

"答えではない"と表示されているすべての操作は、pingコードをtimer1_Tickのメソッドに移動するだけです。 OPの問題はまったく解決されません。 – john

+0

私の旗を見直す人に:OPは、フォームのロードイベントにForm2_Loadメソッドをリンクしておらず、そのOPコード以外はうまく動作していることをコメントですでに確認しています。 Tomの答えはコードレビューであり、答えではなく、彼がやったすべてのことがメソッドのping機能をカプセル化しているため、別の解決策でもありません。 – john

+0

これは質問に対する答えを提供しません。批評をしたり、著者の説明を求めるには、投稿の下にコメントを残してください。 - [レビューから](/レビュー/低品質の投稿/ 18106034) – wp78de

関連する問題