如何在我的Windows Form
计数行中读取多行计数器?
当我执行Windows Form
时,只有在应用程序处理完每个数据时才会显示此计数器。
示例代码
public Form1()
{
InitializeComponent();
setMessage(string.Empty, this.lblErro);
}
private void button1_Click(object sender, EventArgs e)
{
for (int i = 0; i <= xmlnode.Count - 1; i++)
{
int cont = i;
ThreadPool.QueueUserWorkItem(_ =>
{
setMessage(++cont + " of " + xmlnode.Count, this.lblCounter);
});
}
void setMessage(string message, Label lbl)
{
if (InvokeRequired)
{
Invoke((MethodInvoker)(() => setMessage(message, lbl)));
}
else
{
lbl.Text = message;
}
}
}
我尝试了上面的代码,但没有成功。应用程序处理完所有数据时仍会显示消息
答案 0 :(得分:2)
你需要运行这个循环:
for (int i = 0; i <= xmlnode.Count - 1; i++)
{
...
}
关闭主UI线程。有很多方法可以实现这一点,但出于任何原因我更喜欢BackgroundWorker
。你可以这样做:
BackgroundWorker _worker = new BackgroundWorker();
然后在ctor
:
_worker.DoWork += (s, e) =>
{
// place the entire for loop in here
}
现在当你准备好运行它时,就这样做:
_worker.RunWorkerAsync();
答案 1 :(得分:0)
尝试将循环放入:
ThreadPool.QueueUserWorkItem(_ => {
for (int i = 0; i <= xmlnode.Count - 1; i++)
{
int cont = i;
setMessage(++cont + " of " + xmlnode.Count, this.lblCounter);
}
});