Example #1
0
        private void skinButton8_Click(object sender, EventArgs e)
        {
            List <VersionUrl> NewVersions = new List <VersionUrl>();

            foreach (var item in checkedListBox2.CheckedItems)
            {
                Hw_ScanVersion sv = (Hw_ScanVersion)item;
                VersionUrl     vu = new VersionUrl
                {
                    Name = "G" + sv.Bg + "/g" + sv.Sg,
                    BG   = sv.Bg.ToString(),
                    sg   = sv.Sg.ToString(),
                    v    = sv.V.ToString(),
                    f    = sv.F.ToString()
                };



                NewVersions.Add(vu);
            }


            using (SaveFileDialog saveFileDialog1 = new SaveFileDialog())
            {
                saveFileDialog1.Title            = "另存为";
                saveFileDialog1.InitialDirectory = @"\";
                saveFileDialog1.Filter           = "文本(*.txt)|*.txt";
                saveFileDialog1.AddExtension     = true;
                if (saveFileDialog1.ShowDialog() == DialogResult.OK)
                {
                    string savestr = JsonConvert.SerializeObject(NewVersions);

                    FileStream   fs = null;
                    StreamWriter sw = null;
                    //Stream sr = null;
                    try
                    {
                        fs = new FileStream(saveFileDialog1.FileName, FileMode.Create, FileAccess.ReadWrite);
                        fs.Close();


                        sw = new StreamWriter(saveFileDialog1.FileName);
                        sw.Write(savestr);
                        sw.Flush();
                    }
                    catch (Exception ex)
                    {
                    }
                    finally
                    {
                        if (fs != null)
                        {
                            fs.Close();
                        }
                        sw.Close();
                        //sr.Close();
                    }
                }
            }
        }
Example #2
0
        private async Task Scan(List <VersionUrl> AllVersions)
        {
            skinProgressBar1.Maximum = AllVersions.Count; //设置最大长度值
            skinProgressBar1.Value   = 0;                 //设置当前值
            skinProgressBar1.Step    = 1;                 //设置没次增长多少


            int xcs = int.Parse(skinTextBox5.Text);
            await Task.Run(() =>
            {
                int k        = 0;
                int all      = 0;
                int allcount = AllVersions.Count;
                bool b       = true;

                while (b)
                {
                    if (k > xcs)
                    {
                        continue;
                    }
                    k++;
                    if (all == allcount)
                    {
                        break;
                    }


                    List <string> hasv = new List <string>();
                    if (hasv.Contains(AllVersions[all].v))
                    {
                        all++;
                        k--;
                        this.BeginInvoke((MethodInvoker) delegate
                        {
                            try
                            {
                                skinProgressBar1.Value += skinProgressBar1.Step;
                            }
                            catch { }
                        });
                        continue;
                    }
                    Thread t = new Thread(async() =>
                    {
                        if (all < allcount)
                        {
                            var m = AllVersions[all++];
                            #region 跑数据
                            try
                            {
                                HttpClientHandler hch = new HttpClientHandler()
                                {
                                    //Proxy = new WebProxy("127.0.0.1", 8877),
                                    Proxy             = new WebProxy(),
                                    UseProxy          = true,
                                    AllowAutoRedirect = false
                                };
                                HttpClient hc = new HttpClient(hch);


                                HttpRequestMessage hr = new HttpRequestMessage();


                                string url = "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G" + m.BG + "";
                                if (!string.IsNullOrWhiteSpace(m.sg))
                                {
                                    url = "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G" + m.BG + "/g" + m.sg + "";


                                    if (!string.IsNullOrWhiteSpace(m.v) && m.v != "0")
                                    {
                                        url = "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G" + m.BG + "/g" + m.sg + "/v" + m.v + "";
                                        if (!string.IsNullOrWhiteSpace(m.f))
                                        {
                                            url = "http://update.hicloud.com:8180/TDS/data/files/p3/s15/G" + m.BG + "/g" + m.sg + "/v" + m.v + "/f" + m.f + "/full/changelog.xml";
                                        }
                                    }
                                }
                                hr.RequestUri = new Uri(url);


                                HttpResponseMessage res = new HttpResponseMessage();

                                try
                                {
                                    res = await hc.SendAsync(hr);
                                }
                                catch (Exception ex)
                                {
                                    IOHelper.CreateDir("Exception");
                                    this.BeginInvoke((MethodInvoker) delegate
                                    {
                                        IOHelper.CreateFile("Exception\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt");
                                        IOHelper.WriteLine("Exception\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString());
                                        IOHelper.WriteLine("Exception\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", ex.ToString());
                                    });
                                }



                                if (res.StatusCode == HttpStatusCode.OK)
                                {
                                    string Result        = res.Content.ReadAsStringAsync().Result;
                                    string[] refSegments = res.RequestMessage.RequestUri.Segments;


                                    int Bg = 0, Sg = 0, V = 0, F = 0;
                                    if (refSegments.Length > 6)
                                    {
                                        for (int i = 6; i < refSegments.Length; i++)
                                        {
                                            string refs = refSegments[i];
                                            if (i == 6)
                                            {
                                                Bg = int.Parse(refs.TrimStart('G').TrimEnd('/'));
                                            }
                                            else if (i == 7)
                                            {
                                                Sg = int.Parse(refs.TrimStart('g').TrimEnd('/'));
                                            }
                                            else if (i == 8)
                                            {
                                                V = int.Parse(refs.TrimStart('v').TrimEnd('/'));
                                                hasv.Add(refs.TrimStart('v').TrimEnd('/'));
                                            }
                                            else if (i == 9)
                                            {
                                                F = int.Parse(refs.TrimStart('f').TrimEnd('/'));
                                            }
                                        }
                                    }
                                    var vname = "未知";
                                    try
                                    {
                                        vname = Result.Substring(Result.IndexOf("TCPU\" version=\"") + 15, Result.IndexOf("\"", Result.IndexOf("TCPU\" version=\"") + 15) - Result.IndexOf("TCPU\" version=\"") - 15);
                                    }
                                    catch { }



                                    string rurl = res.RequestMessage.RequestUri.AbsoluteUri;

                                    string filenameLog = "", filenameUrl = "", filenameList = "";
                                    try
                                    {
                                        filenameLog  = "Log\\" + V + ".xml";
                                        filenameUrl  = "Url\\" + vname + "_G" + Bg + "_g" + Sg + "_v" + V + "_f" + F + ".txt";
                                        filenameList = "FileList\\" + V + ".xml";
                                    }
                                    catch
                                    {
                                        filenameLog  = "Log\\" + V + ".xml";
                                        filenameUrl  = "Url\\" + vname + "_" + rurl.Substring(rurl.IndexOf("/G") + 1, rurl.IndexOf("/full") - rurl.IndexOf("/G") - 1).Replace("/full", "").Replace("/", "_") + ".txt";
                                        filenameList = "FileList\\" + V + ".xml";
                                    }

                                    if (IOHelper.Exists(filenameLog))
                                    {
                                        IOHelper.DeleteFile(filenameLog);
                                    }
                                    if (IOHelper.Exists(filenameUrl))
                                    {
                                        IOHelper.DeleteFile(filenameUrl);
                                    }
                                    IOHelper.CreateFile(filenameLog);
                                    IOHelper.CreateFile(filenameUrl);
                                    IOHelper.WriteLine(filenameLog, Result);
                                    IOHelper.WriteLine(filenameUrl, res.RequestMessage.RequestUri.AbsoluteUri);
                                    AddTXT(filenameUrl);
                                    GetFileList(res.RequestMessage.RequestUri.AbsoluteUri.Replace("changelog.xml", "filelist.xml"), filenameList);
                                }

                                else if (res.StatusCode == HttpStatusCode.Moved)
                                {
                                    Hw_ScanVersion sv = new Hw_ScanVersion();

                                    string Result        = res.RequestMessage.RequestUri.Segments[6];
                                    string[] refSegments = res.RequestMessage.RequestUri.Segments;
                                    if (refSegments.Length > 6)
                                    {
                                        for (int i = 6; i < refSegments.Length; i++)
                                        {
                                            string refs = refSegments[i];
                                            if (i == 6)
                                            {
                                                sv.Bg = int.Parse(refs.TrimStart('G').TrimEnd('/'));
                                            }
                                            else if (i == 7)
                                            {
                                                sv.Sg = int.Parse(refs.TrimStart('g').TrimEnd('/'));
                                            }
                                            else if (i == 8)
                                            {
                                                sv.V = int.Parse(refs.TrimStart('v').TrimEnd('/'));
                                            }
                                            else if (i == 9)
                                            {
                                                sv.F = int.Parse(refs.TrimStart('f').TrimEnd('/'));
                                            }
                                        }
                                    }
                                    AddTXT(sv.Bg.ToString() + "/" + sv.Sg.ToString());
                                    GetScanVersion.Add(sv);
                                }
                                else if (res.StatusCode != HttpStatusCode.NotFound)
                                {
                                    string Result = "";
                                    Result        = res.RequestMessage.RequestUri.Segments[6];


                                    string[] refSegments = res.RequestMessage.RequestUri.Segments;

                                    string Resultrul = "";
                                    if (refSegments.Length > 6)
                                    {
                                        for (int i = 6; i < refSegments.Length; i++)
                                        {
                                            Resultrul += refSegments[i];
                                        }
                                        string filename = "NotFound\\" + ((int)res.StatusCode).ToString() + "List" + DateTime.Now.ToString("yyyyMMdd") + ".txt";
                                        IOHelper.CreateFile(filename);
                                        IOHelper.WriteLine(filename, Resultrul);

                                        //AddTXT(Resultrul);
                                    }
                                }
                                //await Task.Delay(1);
                            }
                            catch (Exception ex)
                            {
                                //await Task.Delay(100);

                                IOHelper.CreateDir("Exception");
                                this.BeginInvoke((MethodInvoker) delegate
                                {
                                    IOHelper.CreateFile("Exception\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt");
                                    IOHelper.WriteLine("Exception\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", DateTime.Now.ToString());
                                    IOHelper.WriteLine("Exception\\" + DateTime.Now.ToString("yyyy-MM-dd") + ".txt", ex.ToString());
                                });
                            }

                            k--;
                            this.BeginInvoke((MethodInvoker) delegate
                            {
                                try
                                {
                                    skinProgressBar1.Value += skinProgressBar1.Step;
                                }
                                catch { }
                            });

                            #endregion
                        }
                    });
                    t.Start();

                    if (all % 100 == 0)
                    {
                        GC.Collect(); xcs = int.Parse(skinTextBox5.Text);
                    }
                }
            });
        }