2016-07-01 17 views
0

IPのリストにpingを実行したいが、動作していない。マルチスレッドのping IP

私は既にコンソールアプリケーションでこの機能を使用していましたが、機能していました。

string[] addresses = { "192.168.1.2", "192.168.1.3", "192.168.1.4" }; 
    void show() 
    { 
     List<Task<PingReply>> pingTasks = new List<Task<PingReply>>(); 
     foreach (var address in addresses) 
     { 
      pingTasks.Add(PingAsync(address)); 
     } 

     Task.WaitAll(pingTasks.ToArray()); 
     int i = 0; 
     listView1.Clear(); 
     listView1.Columns.Add("Device IP", 100); 
     listView1.Columns.Add("ping", 60); 
     foreach (var pingTask in pingTasks) 
     { 
      string[] A = { addresses[i], pingTask.Result.RoundtripTime.ToString() }; 
      ListViewItem item = new ListViewItem(A); 
      listView1.Items.Add(item); 
      i++; 
     } 
    } 

    Task<PingReply> PingAsync(string address) 
    { 
     var tcs = new TaskCompletionSource<PingReply>(); 
     Ping ping = new Ping(); 
     ping.PingCompleted += (obj, sender) => 
     { 
      tcs.SetResult(sender.Reply); 
     }; 
     ping.SendAsync(address, new object()); 
     return tcs.Task; 
    } 

私を助けてください。 1つのIP仕上げは、そしてちょうどサンプルのために、迅速かつ汚い、リストビューに追加した場合

は、終了するのを待たずに

+0

定義します"働いていない" ...あなたはエラーを受け取りますか?あなたはどんな振る舞いをしていますか? – jeroenh

+0

コードを実行するとPCが動作しなくなる – Alireza

答えて

0

またはTask.Factory.StartNewを使用して、バージョン、ありがとう:

private void RunPing2() 
{ 
    listView1.Clear(); 
    listView1.Columns.Add("Device IP", 100); 
    listView1.Columns.Add("ping", 60); 

    string[] addresses = {"192.168.1.6", "192.168.1.3", "192.168.1.4", "google.com"}; 
    var syncObj = new object(); 
    foreach (var address in addresses) 
    { 
    Task.Factory.StartNew(() => 
    { 
     var ping = new Ping(); 
     try 
     { 
     var reply = ping.Send(address); 
     lock (syncObj) 
     { 
      Invoke(new MethodInvoker(delegate 
      { 
      string[] A = {address, reply.RoundtripTime.ToString()}; 
      var item = new ListViewItem(A); 
      listView1.Items.Add(item); 
      })); 
     } 
     } 
     catch (Exception) 
     { 
     } 
    }); 
    } 
} 
関連する問題