private void txtBtn_Click(object sender, EventArgs e) { try { if (openFileDialog.ShowDialog() == DialogResult.OK) { txtInfo.Text = (DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss ") + "开始导入文件...") + Environment.NewLine; string[] fileFullNames = openFileDialog.FileNames; if (fileFullNames.Length > 0) { DataWrite dataWrite = new DataWrite(); //实例化一个写入数据的类 dataWrite.UpdateUIDelegate += UpdataUIStatus; //绑定更新任务状态的委托 dataWrite.TaskCallBack += Accomplish; //绑定完成任务要调用的委托 //线程池 ThreadPool.QueueUserWorkItem(new WaitCallback(dataWrite.Write), fileFullNames); //Thread thread = new Thread(new ParameterizedThreadStart(dataWrite.Write)); //thread.IsBackground = true; //thread.Start(fileFullNames); } } } catch (Exception ex) { log_info.Error(ex.Message); } }
public RawlerBase CreateRawler(HtmlNode node) { var baseUrl = BaseUrl; RawlerBase rawler = null; bool flag次のノードを調べる = true; if (targetTag.Contains(node.Name)) { Tags tags = new Tags() { Tag = node.Name }; if (node.Attributes.Where(n => n.Name == "class").Any()) { tags.ClassName = node.Attributes.Where(n => n.Name == "class").First().Value; } if (node.Attributes.Where(n => n.Name == "id").Any()) { tags.IdName = node.Attributes.Where(n => n.Name == "id").First().Value; } if (node.ChildNodes.Count() == 1 && node.ChildNodes.Where(n => n.Name == "#text").Any()) { tags.AddChildren(new DataWrite() { Attribute = tags.ClassName }); flag次のノードを調べる = false; } if (node.Attributes.Where(n => n.Name == "style" && n.Value.Contains("background")).Any()) { tags.TagVisbleType = TagVisbleType.Outer; rawler = tags.Add(new ImageLinks() { ImageType = ImageType.BackgroundImage }).DataWrite(node.GetClassName() + "_Image", DataAttributeType.Image).GetRoot(); } rawler = tags; } else if (node.Name == "a") { var resultUrlTFIDF = urlTfidf.GetResult(node.OuterHtml.ToHtml(baseUrl).GetLink().Select(n => n.Url)); var url = node.OuterHtml.ToHtml(baseUrl).GetLink().FirstDefault <RawlerLib.Web.Link, string>(n => n.Url, null); if (url != null) { //IDF が0以下の時、すべてのドキュメントで存在する。 if (urlTfidf.IDFDic.GetValueOrDefault(url) != null && urlTfidf.IDFDic.GetValueOrDefault(url).Value <= 0) { rawler = null; flag次のノードを調べる = false; } else { if (resultUrlTFIDF.GetTakeTopValue(n => n.TFIDF).Where(n => n.Word == url).Any()) { rawler = new Links() { VisbleType = LinkVisbleType.Tag }.AddRange( new Links() { VisbleType = LinkVisbleType.Url }.DataWrite(node.GetClassName() + "_MainLink", DataAttributeType.Url).GetRoot()); if (node.ChildNodes.Count == 1 && node.ChildNodes.First().Name == "#text") { rawler.Add(new Links() { VisbleType = LinkVisbleType.Label }.DataWrite(node.GetClassName() + "_MainLabel").GetRoot()); } } else { rawler = new Links() { VisbleType = LinkVisbleType.Tag }.AddRange( new Links() { VisbleType = LinkVisbleType.Url, Enable = enableGetSubUrlLink }.DataWrite(node.GetClassName() + "_SubLink").GetRoot(), new Links() { VisbleType = LinkVisbleType.Label }.DataWrite(node.GetClassName() + "_SubLabel").GetRoot() ); } } } else { //URLがないAタグの場合。 Tags tags = new Tags() { Tag = node.Name }; if (node.Attributes.Where(n => n.Name == "class").Any()) { tags.ClassName = node.Attributes.Where(n => n.Name == "class").First().Value; } if (node.Attributes.Where(n => n.Name == "id").Any()) { tags.IdName = node.Attributes.Where(n => n.Name == "id").First().Value; } rawler = tags; } if (node.ChildNodes.Count == 1 && node.ChildNodes.Where(n => n.Name == "#text").Any()) { flag次のノードを調べる = false; } } else if (node.Name == "img") { var resultImgeTFIDF = imageTfidf.GetResult(node.OuterHtml.ToHtml(baseUrl).GetImageLink().Select(n => n.Url)); var url = node.OuterHtml.ToHtml(baseUrl).GetImageLink().FirstDefault(n => n.Url, null); if (url != null) { if (imageTfidf.IDFDic.Count > 0 && imageTfidf.IDFDic.GetValueOrDefault(url).Value <= 0) { rawler = null; flag次のノードを調べる = false; } else { if (resultImgeTFIDF.GetTakeTopValue(n => n.TFIDF).Where(n => n.Word == url).Any()) { rawler = new ImageLinks().DataWrite(node.GetClassName() + "_Image", DataAttributeType.Image).GetRoot(); } else { if (iconImageColumn) { rawler = new DataWrite() { AttributeTree = new ImageLinks() { VisbleType = LinkVisbleType.Label }, Value = "1" }; } else { rawler = new ImageLinks().DataWrite(node.GetClassName() + "_Icon", DataAttributeType.Image).GetRoot(); } } } } } ///背景画像に反応させる。 else if (node.Attributes.Where(n => n.Name == "style" && n.Value.Contains("background")).Any()) { rawler = new ImageLinks() { ImageType = ImageType.BackgroundImage }.DataWrite(node.GetClassName() + "_Image", DataAttributeType.Image).GetRoot(); } else if (node.Name == "span") { Tags tags = new Tags() { Tag = node.Name }; if (node.Attributes.Where(n => n.Name == "class").Any()) { tags.ClassName = node.Attributes.Where(n => n.Name == "class").First().Value; } if (node.ChildNodes.Count() == 1 && node.ChildNodes.Where(n => n.Name == "#text").Any()) { tags.AddChildren(new DataWrite() { Attribute = tags.ClassName }); flag次のノードを調べる = false; } rawler = tags; } else if (node.Name == "#comment") { flag次のノードを調べる = false; } else { var t = node.OuterHtml.Replace("\n", "").Trim(); if (t.Length > 0) { rawler = new TagClear().Trim().Add(new DataWrite() { Attribute = node.GetClassName() + "_" + node.Name }).GetRoot(); if (node.ChildNodes.Count == 1 && node.ChildNodes.Where(n => n.Name == "#text").Any()) { flag次のノードを調べる = false; } } } if (rawler != null && node.ChildNodes.Count == 1 && node.ChildNodes.Where(n => n.Name == "span").Any()) { rawler.AddChildren(new DataWrite() { Attribute = node.GetClassName() }); } foreach (var item in node.ChildNodes) { if (flag次のノードを調べる) { var r = CreateRawler(item); if (r != null && rawler != null) { rawler.AddChildren(r); } else { if (r != null && rawler == null) { rawler = r; } } } } return(rawler); }
protected virtual void OnDataWrite(byte[] buffer, int offset, int count) { DataWrite?.Invoke(this, new DataEventArgs(buffer, offset, count)); }
/// <summary> /// 开始接收GPS数据 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btn_StartRecv_Click(object sender, EventArgs e) { try { this.tsReceiveOrNot.ForeColor = Color.Red; int flag = GarminUSB.Classes.DLL.GarminUSB.setGarminUSBReady(); if (flag == 0) { this.tsReceiveOrNot.Text = "状态:GarminUSB接收机未插入!";//状态栏信息 MessageBox.Show("请插入GarminUSB接收机!", "警告", MessageBoxButtons.OK, MessageBoxIcon.Warning); return; } this.btn_SartRecv.Enabled = false; string strRcv = null; this.tsReceiveOrNot.Text = "状态:GPS数据接收中。。。。。。";//状态栏信息 // rtxt_DataRecv.SelectAll(); // rtxt_DataRecv.SelectionColor = Color.Blue; //改变字体的颜色 #region 注释掉 /* * //!!!静态类里面的静态方法,要通过类调用,竟然忘记了!!!太笨 * GarminUSB.Classes.DLL.GarminUSB.setGarminUSBReady(); * * for (; ; ) * { * * this.tsReceiveOrNot.Text = "状态:GPS数据中。。。。。。"; * //在控件上用程序加了东西要refresh才看的到 2017.7.21 xnn * this.Refresh(); * * //输出当前时间 * DateTime dt = DateTime.Now; * * // rtxt_DataRecv.Text += dt.GetDateTimeFormats('f')[0].ToString() + "\r\n"; * rtxt_DataRecv.Text += dt.ToLocalTime().ToString() + "\r\n"; * rtxt_DataRecv.SelectAll(); * rtxt_DataRecv.SelectionColor = Color.Blue; //改变字体的颜色 * * * IntPtr ptrRet = GarminUSB.Classes.DLL.GarminUSB.getGPSData();//获得返回数据所在地址 * strRcv = Marshal.PtrToStringAnsi(ptrRet);//通过地址查找接收到的GPS数据 * * //一下两种方式都可以,但是方法二可能会出现乱码,偶现 2017.7.21 xnn * /*方法一 按字符判断 * char[] temp = strRcv.ToCharArray(); * strRcv=null; * for (int i = 0; i < temp.Length; i++) * { * if (!temp[i].Equals('\r') && !temp[i].Equals('\n') ) * { * strRcv += temp[i]; * } * else * { * break; * } * } */ /* * //方法二 截取字符串处理方式 * int index = strRcv.LastIndexOf('\r'); * strRcv = strRcv.Substring(0, index); * * // rtxt_DataRecv.Text += strRcv + "\r\n"; //第一种,直接显示信息在文本框 * * this.Invoke(showGPS, strRcv); //第二种,通过委托,将GPS数据显示在文本框中 2017.7.21 xnn * * //保存GPS数据 * saveData(strRcv + "\r\n"); * //打印时间+GPS数据 * // saveData(dt.ToLocalTime().ToString() + "\r\n" + strRcv ); * } */ #endregion DataWrite writeGPSData = new DataWrite(); writeGPSData.UpdateUIDelegate += UpdataUIStatus;//绑定更新任务状态的委托 Thread thread = new Thread(new ThreadStart(writeGPSData.writeData)); thread.IsBackground = true;//后台 thread.Start(); } catch (Exception ex) { Log.WriteLog.Write("GPSReader_USB", "btn_StartRecv_Click", ex.Message); // MessageBox.Show(ex.Message, "出错提示btn_Switch_Click"); return; } }
void Start () { HSVConverter = GetComponent<HSVtoRGB> (); dw = GetComponent<DataWrite> (); musics = ShuffleACList (musics); Setup (); }