如何使C#应用程序具有响应性
我正在开发一个应用程序,它有一个巨大的计算循环,问题是我希望标签文本不断更新,即更新多少行?循环中有一个计数器变量和如何使C#应用程序具有响应性,c#,C#,我正在开发一个应用程序,它有一个巨大的计算循环,问题是我希望标签文本不断更新,即更新多少行?循环中有一个计数器变量和label3.Text+=counter语句?但它只在循环结束后更改一次,我想在每次迭代后更新它? 对此问题应该做些什么?我必须使用线程吗? 这是我的完整代码 私有无效按钮3\u单击(对象发送者,事件参数e) { sw.Start(); //int计数器=0; StreamReader read=File.OpenText(openFileDialog1.FileName); 字
label3.Text+=counter
语句?但它只在循环结束后更改一次,我想在每次迭代后更新它?
对此问题应该做些什么?我必须使用线程吗?
这是我的完整代码
私有无效按钮3\u单击(对象发送者,事件参数e)
{
sw.Start();
//int计数器=0;
StreamReader read=File.OpenText(openFileDialog1.FileName);
字符串_data=“”;
字符串Filepath=Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
文件路径+=“\Temp.CSV”;
//MessageBox.Show(文件路径);
WriteAllText(文件路径,“时间戳、已用时间、客户端、操作/代码、大小、方法、URI、标识、来自内容\n”);
而((_data=read.ReadLine())!=null)
{
行++;
_数据=_data.Replace(“,”,”);
_数据=_data.Replace(“,”,”);
_数据=_data.Replace(“,”,”);
_数据=_data.Replace(“,”,”);
_数据=_data.Replace(“,”,”);
_数据=_data.Replace(“,”,”);
//richTextBox1.Text+=\u数据;
AppendAllText(文件路径,_data+“\n”);
//计数器++
//foreach (char x in _data)
//{
// if (x.ToString() == " ")
// {
// output += ",";
// richTextBox1.Text += output;
// output = "";
// continue;
// }
// output += x.ToString();
//}
//richTextBox1.Text += output;
//output = "";
//richTextBox1.Text += "\n";
if (lines==2000)
break;
}
sw.Stop();
label5.Text = lines.ToString();
label6.Text = sw.Elapsed.ToString()+" Seconds";
} </code>
//foreach(字符x在_数据中)
//{
//如果(x.ToString()=“”)
// {
//输出+=“,”;
//richTextBox1.Text+=输出;
//输出=”;
//继续;
// }
//输出+=x.ToString();
//}
//richTextBox1.Text+=输出;
//输出=”;
//richTextBox1.Text+=“\n”;
如果(行==2000)
打破
}
sw.Stop();
label5.Text=lines.ToString();
label6.Text=sw.appeased.ToString()+“秒”;
}
除非您发布更多关于目标应用程序是什么(WPF、ASP.net、WinForms等)的信息,以及您当前正在执行的操作的一些代码示例,否则此答案将有点模糊 无论如何,您都希望尝试并利用您的UI框架来进行控件更新,而不是自己手动进行 例如,如果应用程序UI是WPF,则可以通过绑定到实现INotifyPropertyChanged接口的视图模型(或代码隐藏中)上的属性来利用数据绑定
这样,绑定到属性(例如,标签或文本框)的控件将在视图模型更改属性值时自动更新,因此,您可以专注于业务逻辑,而不是试图自己手动更新UI。您应该发布代码-这将使其他人更容易帮助和理解您的意思]您可能需要
label3.update()
或Application.DoEvents()
在label3.Text=counter
之后,我不会看Application.DoEvents()
我会看一下如何使用BackgroundWorker做一些简单的谷歌搜索。此外,我们无法label3.Text+=counter
将无法工作,除非计数器被转换为字符串`Application.DoEvents()是一条危险的道路。我不想往下说你的目标是什么:Winforms、WPF、ASP。。?始终正确标记您的问题!我已经编辑了我的问题,现在包含了代码