예제 #1
0
        private static void RouterAssist(RouterInformation router)
        {
            Ping p = new Ping();

            p.PingCompleted += RouterCallback;
            p.SendAsync(router.IP, 650, router); // 超时.75秒
            flag.WaitOne();
        }
예제 #2
0
        public static void DoGetRouterInformationTask()
        {
            RouterList = new List <RouterInformation>();
            DataSet ds    = SqlHelper.GetStoreInformation();
            int     count = ds.Tables[0].Rows.Count;

            routerComplete = new int[count];
            Stopwatch sw = new Stopwatch();

            sw.Start();
            for (int i = 0; i < count; i++)
            {
                routerComplete[i] = 0;
            }
            for (int i = 0; i < count; i++)
            {
                RouterInformation router = new RouterInformation();
                router.StoreNo     = ds.Tables[0].Rows[i]["storeNo"].ToString();
                router.StoreRegion = ds.Tables[0].Rows[i]["storeRegion"].ToString();
                router.StoreType   = ds.Tables[0].Rows[i]["storeType"].ToString();
                router.IP          = ds.Tables[0].Rows[i]["routerIP"].ToString();
                router.I           = i;
                router.Total       = count;
                RouterAssist(router);
            }
            while (true)
            {
                if (count == GetArraySum(routerComplete))
                {
                    string[]  clist = { "storeNo", "storeRegion", "storeType", "routerNetwork", "routerType", "date" };
                    DataTable dt    = new DataTable();
                    foreach (string colName in clist)
                    {
                        dt.Columns.Add(colName);
                    }
                    int rowCount = RouterList.Count;
                    for (int i = 0; i < rowCount; i++)
                    {
                        DataRow row = dt.NewRow();
                        row["storeNo"]       = RouterList[i].StoreNo;
                        row["storeRegion"]   = RouterList[i].StoreRegion;
                        row["storeType"]     = RouterList[i].StoreType;
                        row["routerNetwork"] = RouterList[i].RouterNetwork;
                        row["routerType"]    = RouterList[i].RouterType;
                        row["date"]          = RouterList[i].Date;
                        dt.Rows.Add(row);
                    }
                    SqlHelper.CommonBulkInsert(dt, "RouterInformationTemp"); // 插入到Temp表中用做对比
                    sw.Stop();
                    double ms = sw.ElapsedMilliseconds / 1000.0;
                    Console.WriteLine("耗时: " + ms.ToString());
                    break;
                }
            }
        }
예제 #3
0
        private static void RouterCallback(object sender, PingCompletedEventArgs e)
        {
            RouterInformation router = (RouterInformation)e.UserState;

            router.RouterNetwork = (e.Reply.Status == IPStatus.Success) ? "Up" : "Down";
            router.Date          = DateTime.Now.ToString();
            RouterList.Add(router);
            routerComplete[router.I] = 1; // 相应位置1表示已经Ping完
            Console.WriteLine((router.I + 1).ToString() + "/" + router.Total.ToString() + " " + router.StoreNo + ": " + router.RouterNetwork);
            flag.Set();
        }
예제 #4
0
 private static ArrayList GetData(RouterCondition rc)
 {
     ArrayList list = new ArrayList();
     DataSet ds = SqlHelper.GetRouterInformation(rc);
     int count = ds.Tables[0].Rows.Count;
     for (int i = 0; i < count; i++)
     {
         RouterInformation router = new RouterInformation();
         router.StoreNo = ds.Tables[0].Rows[i]["storeNo"].ToString();
         router.StoreRegion = ds.Tables[0].Rows[i]["storeRegion"].ToString();
         router.StoreType = ds.Tables[0].Rows[i]["storeType"].ToString();
         router.RouterNetwork = ds.Tables[0].Rows[i]["routerNetwork"].ToString();
         router.RouterType = ds.Tables[0].Rows[i]["routerType"].ToString();
         router.Date = ds.Tables[0].Rows[i]["date"].ToString();
         list.Add(router);
     }
     return list;
 }
예제 #5
0
 private static void RouterAssist(RouterInformation router)
 {
     Ping p = new Ping();
     p.PingCompleted += RouterCallback;
     p.SendAsync(router.IP, 500, router);
     flag.WaitOne();
 }
예제 #6
0
 public static void DoGetRouterInformationTask()
 {
     RouterList = new List<RouterInformation>();
     DataSet ds = SqlHelper.GetStoreInformation();
     int count = ds.Tables[0].Rows.Count;
     routerComplete = new int[count];
     Stopwatch sw = new Stopwatch();
     sw.Start();
     for (int i = 0; i < count; i++)
     {
         routerComplete[i] = 0;
     }
     for (int i = 0; i < count; i++)
     {
         RouterInformation router = new RouterInformation();
         router.StoreNo = ds.Tables[0].Rows[i]["storeNo"].ToString();
         router.StoreRegion = ds.Tables[0].Rows[i]["storeRegion"].ToString();
         router.StoreType = ds.Tables[0].Rows[i]["storeType"].ToString();
         router.IP = ds.Tables[0].Rows[i]["routerIP"].ToString();
         router.I = i;
         router.Total = count;
         RouterAssist(router);
     }
     while (true)
     {
         if(count == GetArraySum(routerComplete))
         {
             string[] clist = { "storeNo", "storeRegion", "storeType", "routerNetwork", "routerType", "date" };
             DataTable dt = new DataTable();
             foreach (string colName in clist)
             {
                 dt.Columns.Add(colName);
             }
             int rowCount = RouterList.Count;
             for (int i = 0; i < rowCount; i++)
             {
                 DataRow row = dt.NewRow();
                 row["storeNo"] = RouterList[i].StoreNo;
                 row["storeRegion"] = RouterList[i].StoreRegion;
                 row["storeType"] = RouterList[i].StoreType;
                 row["routerNetwork"] = RouterList[i].RouterNetwork;
                 row["routerType"] = RouterList[i].RouterType;
                 row["date"] = RouterList[i].Date;
                 dt.Rows.Add(row);
             }
             SqlHelper.CommonBulkInsert(dt, "RouterInformationTemp"); // 插入到Temp表中用做对比
             sw.Stop();
             double ms = sw.ElapsedMilliseconds / 1000.0;
             Console.WriteLine("耗时: " + ms.ToString());
             break;
         }
     }
 }