首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何提高ASP文本控件的写入性能

如何提高ASP文本控件的写入性能
EN

Stack Overflow用户
提问于 2014-05-27 18:20:51
回答 1查看 601关注 0票数 0

我正在开发一个web应用程序,它需要以只读格式在文本文件中显示信息。我使用了一个字符串生成器和一个文字控件(在发布的代码中是litProgram)来完成这个任务。我读取文本文件,使用字符串生成器将其内容复制到新字符串中,然后将文字控件的text属性设置为新字符串。下面是代码后面的函数:

代码语言:javascript
复制
protected void viewCNC()
{
   // Clear any existing program text
   litProgram.Text = "";
   // Get Workcenter name for folder navigation
   string workcenter = gvDispatchList.SelectedRow.Cells[this.Master.getColumnID("WorkCenter", gvDispatchList)].Text;
   // Get program name from program list
   if (gvPrograms.SelectedRow != null)
   {
     string program = gvPrograms.SelectedRow.Cells[0].Text;

     // Change label
     lblProgramName.Text = program;

     // Read file
      using (StreamReader sr = new StreamReader("\\\\server\\CNCPrograms\\" + workcenter + "\\MasterPrograms\\" + program))
      {
          StringBuilder sb = new StringBuilder();
          while (!sr.EndOfStream)
          {
            sb.Append(sr.ReadLine());
            sb.Append("<br/>");
          }

          litProgram.Text = sb.ToString();

          upnlViewCNC.Update();
          modalViewCNC.Show();
       }
   }
   else
   {

       MessageBox msg = new MessageBox();
       msg.Alert("Please select a program.");
    }
}

这种方法工作得很好,但是当我试图显示来自非常大的文件(超过1000 KB)的文本时,问题就出现了。随着文字文本的更新,有一个非常明显的滞后。我将经济放缓的原因追溯到"litProgram.Text = sb.ToString();“行。

我的问题是,这是否一种很好的使用方法,我是否有办法使它更快?当用户等待应用程序完成文本复制到文字时,延迟2-3秒是不可取的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-05-28 07:11:02

StringBuilder.ToString()生成一个新字符串,您有两个操作:( a)生成一个新字符串,b)将其赋值给文字控件

代码语言:javascript
复制
litProgram.Text = sb.ToString();

要确保文字的速度慢,请执行以下操作

代码语言:javascript
复制
string s = sb.ToString();
litProgram.Text = s;

并将其与你以前的衡量标准进行比较。

这里也一样

代码语言:javascript
复制
while (!sr.EndOfStream)
{
    sb.Append(sr.ReadLine());
    sb.Append("<br/>");
}

根据这种比较的说法,这样做可能是有意义的

代码语言:javascript
复制
string s = String.Empty;
while ((s = sr.ReadLine()) != null)
{
    sb.Append(s);
    sb.Append("<br/>");
}

我认为,您的代码看起来不错,如果您担心性能问题,您可以检查是否真的需要一次返回100万个数据。只返回前100 K并放置滚动或“读取更多”的-button,并按需加载文件的其余部分。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23896349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档