C#多线程更新窗口显示

如图所示,我要在listView内不断取出Sid拦内的文本,取出后,在状态栏显示“成功”,然后再下面的statusStrip则显示“成功**个”。关键是速度。还有稳定。我... 如图所示,我要在listView内不断取出Sid拦内的文本,取出后,在状态栏显示“成功”,然后再下面的statusStrip则显示“成功**个”。关键是速度。还有稳定。我要导入上万条文本。然后运行速度100/秒。线程在10以内,求大神些一下源码
http://d.hiphotos.bdimg.com/album/s%3D740%3Bq%3D90/sign=3ea4179c1138534388cf8525a328c143/38dbb6fd5266d01602aa7ad8962bd40734fa358a.jpg
展开
 我来答
kostr
2013-07-25 · TA获得超过102个赞
知道小有建树答主
回答量:84
采纳率:0%
帮助的人:95.9万
展开全部

请参考

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次左右。

超出字数限制,后面用图片提交

不说无所谓谓谓
2017-10-19 · TA获得超过547个赞
知道小有建树答主
回答量:454
采纳率:63%
帮助的人:139万
展开全部
托管不就好了,才1W的文本,不用什么算法,现在的PC都带的动
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友115a69b
2013-07-24 · TA获得超过253个赞
知道小有建树答主
回答量:428
采纳率:50%
帮助的人:385万
展开全部
  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();
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式