C#多线程更新窗口显示
如图所示,我要在listView内不断取出Sid拦内的文本,取出后,在状态栏显示“成功”,然后再下面的statusStrip则显示“成功**个”。关键是速度。还有稳定。我...
如图所示,我要在listView内不断取出Sid拦内的文本,取出后,在状态栏显示“成功”,然后再下面的statusStrip则显示“成功**个”。关键是速度。还有稳定。我要导入上万条文本。然后运行速度100/秒。线程在10以内,求大神些一下源码
http://d.hiphotos.bdimg.com/album/s%3D740%3Bq%3D90/sign=3ea4179c1138534388cf8525a328c143/38dbb6fd5266d01602aa7ad8962bd40734fa358a.jpg 展开
http://d.hiphotos.bdimg.com/album/s%3D740%3Bq%3D90/sign=3ea4179c1138534388cf8525a328c143/38dbb6fd5266d01602aa7ad8962bd40734fa358a.jpg 展开
3个回答
展开全部
请参考
http://zhidao.baidu.com/question/573457862?&oldq=1#answer-1443713525
线程方法的在快速填充大量数据的情况下运行不一定理想的,建议使用backgroudworker
频繁的使用委托效率并不是很好~~同时优化数据加载和处理过程
可以参考http://www.tecnality.com/NewsDetail.aspx?ID=21673
上半年做的一个短信机,10w号码加载、发送毫无压力
那个号码容器用的就是ListView,当然你用DataGrid也可以替代
更多追问追答
追问
我要做的是取出Sid栏内的一项,访问一个网页、然后判断返回的数据是否成功。然后将成功(失败)显示到后边的状态栏内,接着再操作下一个。就是这样循环。我自己用委托做了一个、但是速度不理想、我想要的是5线程、速度秒百
追答
上面这个程序由加载和发送两部分构成,其中发送部分和你的需求类似
1、从用户指定的文件(文本或Excel)导入号码,异步加载10w数量2秒可以加载完成
同时统计电话总量并更新页面
2、用户指定发送区间或全部号码,使用异步线程发送,同时统计总计划发送量、已发送量、估计剩余时间。其中关键的发送方法需要等待运营商的反馈,因而必然会产生“阻塞”,因此10w发送速度在8~30分钟(典型15分钟)左右。
你的问题起关键就是“访问目标网页,检查数据”,然后“更新页面统计”,这个速度其实很容易计算
参考以下代码:
/// <summary>
/// Alita 2013-05-24
/// </summary>
/// <remarks>判定远端位置的文件是否存在的方法</remarks>
/// <param name="fileUrl">包含完整路径的远端文件名</param>
/// <returns></returns>
public static bool RemoteFileExists(string fileUrl)
{
bool result = false;//下载结果
System.Net.WebResponse response = null;
try
{
System.Net.WebRequest req = System.Net.WebRequest.Create(fileUrl);
response = req.GetResponse();
result = response == null ? false : true;
req = null;
}
catch (Exception ex)
{
result = false;
}
finally
{ if (response != null)
{
response.Close();
}
} return result;
}
这是另一个程序,用于判定远程服务器上是否存在某个文件,是不是和你需要网页响应一样呢?
我们测试过,这个响应时间在20~150ms之间,典型值在30ms上下,也就是说能够访问30次左右。
超出字数限制,后面用图片提交
展开全部
托管不就好了,才1W的文本,不用什么算法,现在的PC都带的动
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Thread t = new Thread(new ThreadStart(delegate()
{
if (this.InvokeRequired)
{
//this.BeginInvoke//频繁更新或更新很慢请使用异常
this.Invoke(new MethodInvoker(delegate()
{
this.Text = Guid.NewGuid().ToString(); //处理并更新状态栏
}));
}
else
{
this.Text = Guid.NewGuid().ToString(); //处理并更新状态栏
}
}));
t.Start();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询