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(); } } } }
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); } } }); }