Exemplo n.º 1
0
        private void pingWorker_DoWork(object o)
        {
            PingRange pingRange = (PingRange)o;

            byte[] start = pingRange.StartRange.GetAddressBytes();
            byte[] end   = pingRange.EndRange.GetAddressBytes();

            LinkedList <Thread> threads = new LinkedList <Thread>();

            for (byte o0 = start[0]; o0 <= end[0]; o0++)
            {
                for (byte o1 = start[1]; o1 <= end[1]; o1++)
                {
                    for (byte o2 = start[2]; o2 <= end[2]; o2++)
                    {
                        for (byte o3 = start[3]; o3 <= end[3]; o3++)
                        {
                            pingBlock.WaitOne();
                            Thread t = new Thread(new ParameterizedThreadStart(DoPing));
                            t.Start(new IPAddress(new byte[] { o0, o1, o2, o3 }));
                            threads.AddLast(t);
                        }
                    }
                }
            }


            foreach (Thread ln in threads)
            {
                ln.Join();
            }

            try
            {
                RaiseNetScanComplete();
            }
            catch (InvalidOperationException)
            {
            }
        }
Exemplo n.º 2
0
        public void Start(PingRange pr)
        {
            Thread t = new Thread(new ParameterizedThreadStart(pingWorker_DoWork));

            t.Start(pr);
        }