private void ShowContent(string RecContent)
{
if (this.label2.InvokeRequired)//如果在UI主线程操作
{
this.label2.Invoke(new LabelDelegate(ShowContent), new object[] { RecContent });
}
else
this.label2.Text=RecContent;
} private void button3_Click(object sender, EventArgs e)
{
for(int i=0;i<100;i++)
{
ShowContent(i.ToString());
System.Threading.Thread.Sleep(500);
}
}点击按钮后窗体还卡不是说用 了Invoke 就好了吗?(急)(急)(急)(急)
解决方案 »
- 请教下C#的几个基本概念,顺便有个句子读不懂
- 这种表格式的查询结果该如何弄出来
- 求救!!!使用Remoting的IPC时候的问题,我返回的错误消息是“???????????customexception???????”
- 如何让 textBox 变成密码模式,输入字符为 * 号
- 如何得到NTFS文件的摘要信息?(希望知秋一叶大侠能看到)
- 如果你是高手请进!~~~~~ListView转化为文本文件(txt)文件问题? 急急急!!!!!!!!!!!!!!
- 如何在combox中嵌套一个datagrid?
- 求教经验
- 三个小问题,请高手赐教.
- 晕~~VS怎么那么烦!?
- C# 多页打印同步问题
- GridView添加新行
嗷嗷帅,嘎嘎
要在新建的线程上执行ShowContent()才行,最好把invoke改为begininvoke,这样一定不卡
{ Thread start = new Thread(new ThreadStart(Start));
start.Start();
}
private void Start()
{
int i = 0;
while (i < 10)
{
i++;
ShowContent(i.ToString());
Thread.Sleep(500);
}
}
用多线程吧,for一直在执行
private void ShowContent(string RecContent)
{
if (this.label2.InvokeRequired)//如果在UI主线程操作
{
this.label2.Invoke(new LabelDelegate(ShowContent), new object[] { "已经处理了:" + RecContent });
}
else
this.label2.Text = "已经处理了:" + RecContent;
Application.DoEvents();
}