Guest User

Untitled

a guest
Jun 28th, 2010
548
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 2.81 KB | None | 0 0
  1.  // This is the method which starts the whole checking process 
  2. BackgroundWorker[] bgw = new BackgroundWorker[Properties.Settings.Default.Threads];
  3.             string[] args = new string[2];
  4.             int temp = -1;
  5.             for (int i = 0; i < Properties.Settings.Default.Threads; i++)
  6.             {
  7.                 bgw[i] = new BackgroundWorker();
  8.                 bgw[i].DoWork += new DoWorkEventHandler(this.bgWorker_DoWorkPing);
  9.                 bgw[i].RunWorkerCompleted += new RunWorkerCompletedEventHandler(this.bgWorker_RunWorkerCompleted);
  10.                
  11.                 temp = GetNextinQueue();
  12.                
  13.                 if (temp != -1)
  14.                 {
  15.                     args[0] = temp.ToString();
  16.                     args[1] = lvProxy.Items[temp].SubItems[0].Text;
  17.                     bgw[i].RunWorkerAsync(args);
  18.                    
  19.                 }
  20.                 else
  21.                     break;
  22.             }
  23.  
  24.  
  25.  
  26.  private void bgWorker_DoWorkPing(object sender,DoWorkEventArgs e)
  27.         {
  28.            
  29.             BackgroundWorker worker = sender as BackgroundWorker;
  30.  
  31.             string[] args = e.Argument as string[];
  32.            
  33.             e.Result = new long[] {long.Parse(args[0]),ExecutePing(args[1])};
  34.         }
  35.         private void bgWorker_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
  36.         {
  37.            
  38.             if (e.Error != null)
  39.             {
  40.                 MessageBox.Show(e.Error.Message);
  41.             }
  42.             else if (e.Cancelled)
  43.             {
  44.                 s("Checking was aborted...");
  45.             }
  46.             else
  47.             {
  48.                
  49.                 long[] res = e.Result as long[];
  50.                 lvProxy.Items[(int)res[0]].SubItems[2].Text = res[1].ToString();
  51.                 this.lvProxy.Sort();
  52.                
  53.                 int next = GetNextinQueue();
  54.                 if (next != -1)
  55.                 {
  56.                     BackgroundWorker bgw = sender as BackgroundWorker;
  57.                    
  58.                     bgw.RunWorkerAsync(new string[] {next.ToString(),lvProxy.Items[next].SubItems[0].Text});
  59.                    
  60.                 }
  61.             }
  62.  
  63.          
  64.         }
  65.  
  66.         private long ExecutePing(string ip)
  67.         {
  68.             Ping p = new Ping();
  69.             PingReply pr = p.Send(ip, Properties.Settings.Default.Timeout,Form1.testdata);
  70.             switch (pr.Status)
  71.             {
  72.                 case IPStatus.Success:
  73.                     {
  74.                         return pr.RoundtripTime;
  75.                     }
  76.                 case IPStatus.TimedOut:
  77.                     {
  78.                         return -1;
  79.                     }
  80.                 default:
  81.                     {
  82.                         return 0;
  83.                     }
  84.             }
  85.         }
Advertisement
Add Comment
Please, Sign In to add comment