实例介绍
【实例简介】
【实例截图】
【核心代码】
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.Threading;
using System.Data.SqlClient;
namespace AutoFor
{
public partial class TextFor : Form
{
private delegate void UpDateDgvDelegate(string msg, int rowId, string columnName);
private UpDateDgvDelegate _upDateStateDelegate;
public TextFor()
{
InitializeComponent();
_upDateStateDelegate = new UpDateDgvDelegate(UpDateDgv);
}
/// <summary>
/// 修改表格的行数据
/// </summary>
/// <param name="msg">要修改为的数据</param>
/// <param name="rowId">行号</param>
/// <param name="columnName">列名</param>
private void UpDateDgv(string msg, int rowId, string columnName)
{
try
{
dgvTextFor.Rows[rowId].Cells[columnName].Value = msg.ToString();
}
catch { }
}
/// <summary>
/// 程序执行时间测试
/// </summary>
/// <param name="dateBegin">开始时间</param>
/// <param name="dateEnd">结束时间</param>
/// <returns>返回(秒)单位,比如: 0.00239秒</returns>
public static string ExecDateDiff(DateTime dateBegin, DateTime dateEnd)
{
TimeSpan ts1 = new TimeSpan(dateBegin.Ticks);
TimeSpan ts2 = new TimeSpan(dateEnd.Ticks);
TimeSpan ts3 = ts1.Subtract(ts2).Duration();
return ts3.TotalMilliseconds.ToString();
}
/// <summary>
/// 执行数据
/// </summary>
/// <param name="dgvrowid"> 线程号行号</param>
/// <param name="number">循环总次数</param>
private void PingTask(int dgvrowid, int number, string url, int time)
{
//获取开始时间
DateTime st = DateTime.Now;
//开始时间
this.BeginInvoke(_upDateStateDelegate, st.ToString("hh-mm-ss"), dgvrowid, "开始时间");
for (int i = 0; i < number; i )
{
//获取线程开始时间
DateTime stThread = DateTime.Now;
try
{
HttpHelps hh = new HttpHelps();
//自动访问百度,主要是延长时间
string strdate = hh.GetHttpRequestStringByNUll_Get(url, null);
//当前循环次数
this.BeginInvoke(_upDateStateDelegate, strdate, dgvrowid, "数据");
//当前循环次数
this.BeginInvoke(_upDateStateDelegate, (i 1).ToString(), dgvrowid, "当前循环次数");
//获取结束时间
DateTime et = DateTime.Now;
//结束时间
this.BeginInvoke(_upDateStateDelegate, et.ToString("hh-mm-ss"), dgvrowid, "结束时间");
//总用时(毫秒)
this.BeginInvoke(_upDateStateDelegate, ExecDateDiff(st, et), dgvrowid, "总用时(毫秒)");
do
{
if (stThread.AddSeconds(time) <= DateTime.Now)
{
break;
}
} while (true);
}
catch { }
}
}
/// <summary>
/// 创建表格
/// </summary>
/// <param name="rows">生成多少行数</param>
private void CreateTable(int rows)
{
DataTable dt_Sale = new DataTable();
DataColumn dc = null;
//线程ID
dc = new DataColumn();
dc.ColumnName = "线程ID";
dc.DefaultValue = "1";
dc.DataType = Type.GetType("System.String");
dt_Sale.Columns.Add(dc);
//循环类型
dc = new DataColumn();
dc.ColumnName = "循环类型";
dc.DefaultValue = " ";
dc.DataType = Type.GetType("System.String");
dt_Sale.Columns.Add(dc);
//当前循环次数
dc = new DataColumn();
dc.ColumnName = "当前循环次数";
dc.DefaultValue = " ";
dc.DataType = Type.GetType(" System.String");
dt_Sale.Columns.Add(dc);
//开始时间
dc = new DataColumn();
dc.ColumnName = "开始时间";
dc.DefaultValue = " ";
dc.DataType = Type.GetType("System.String");
dt_Sale.Columns.Add(dc);
//结束时间
dc = new DataColumn();
dc.ColumnName = "结束时间";
dc.DefaultValue = " ";
dc.DataType = Type.GetType("System.String");
dt_Sale.Columns.Add(dc);
//总用时(毫秒)
dc = new DataColumn();
dc.ColumnName = "总用时(毫秒)";
dc.DefaultValue = " ";
dc.DataType = Type.GetType("System.String");
dt_Sale.Columns.Add(dc);
//测试数据
dc = new DataColumn();
dc.ColumnName = "数据";
dc.DefaultValue = " ";
dc.DataType = Type.GetType("System.String");
dt_Sale.Columns.Add(dc);
DataRow dr = dt_Sale.NewRow();
for (int i = 1; i < rows; i )
{
dr["线程ID"] = i.ToString();
dr["循环类型"] = "For循环";
dr["当前循环次数"] = "0";
dr["开始时间"] = "00:00:00";
dr["结束时间"] = "00:00:00";
dr["总用时(毫秒)"] = "0";
dr["数据"] = "";
dt_Sale.Rows.Add(dr);
dr = dt_Sale.NewRow();
}
dgvTextFor.DataSource = dt_Sale;
}
private void button3_Click(object sender, EventArgs e)
{
int count = Convert.ToInt32(txtCount.Text.Trim());
int number = Convert.ToInt32(txtNumber.Text.Trim());
CreateTable(count 1);
//开启number个线程
for (int i = 0; i < count; i )
{
Thread pingTask = new Thread(new ThreadStart(delegate
{
PingTask(i, number, textBox1.Text.Trim(), Convert.ToInt32(txtForTime.Text.Trim()));
}));
pingTask.Start();
Thread.Sleep(Convert.ToInt32(txtKtime.Text.Trim()) * 1000);
}
}
}
}
好例子网口号:伸出你的我的手 — 分享!
相关软件
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明


网友评论
我要评论