我的问题如下:怎样在代码片段之间设置一个延时,举例如下:public void hanshu()
{
/*
代码1
*///延时点/*
代码2
*///延时点/*
代码3
*/
}我知道 用while可以延时,比如
int i=0;
while(i<1000000){ Application.DoEvents(); i++; }但这样的做法是很耗CPU资源的。有没有定时器的使用方法可以实现这个需求,timercallback 回调方法,需要另写一个函数,不满足我的需求。请大家帮忙。
{
/*
代码1
*///延时点/*
代码2
*///延时点/*
代码3
*/
}我知道 用while可以延时,比如
int i=0;
while(i<1000000){ Application.DoEvents(); i++; }但这样的做法是很耗CPU资源的。有没有定时器的使用方法可以实现这个需求,timercallback 回调方法,需要另写一个函数,不满足我的需求。请大家帮忙。
解决方案 »
- begininvoke为什么还不行
- 简单问题:怎样还原并激活窗体(要求保留原状态)?
- c#2005中如何响应鼠标滚轮滚动事件?
- 在线等 textBox中只允许输入一个范围内整数,否则弹出对话框提示
- 求助:下面这段C++程序怎么才能转换到C#?
- 面试题目,请各位帮帮忙!
- c#windos程序如何打包?
- 菜鸟问题:怎么打开下一个窗口(WINDOWS里的)
- aspx页面中,嵌入rmvb的视频文件,播放正常,但是音频文件却总是发生错误Clip info : no information available
- 想用C#作一个简单的类似FrontPage的Web Page Editor,如何利用ppt组件?
- CheckBox怎么在点击的时候进行判断,而不是点了马上就变值
- C# winform 报表问题
{
Application.DoEvents();
Thread.Sleep(100);
i++;
}
//不用循环,不用Thread.Sleep(n),
//那你用var a=1+2+3+4+5....+1000000000000000000?
其实你是不想程序卡死事吗?要是这样的话你可以新开一个线程呀
Thread newThread=new Thread(hanshu);
是的,我已经新开了线程,但是多线程里通过 invoke 委托回调了UI窗体的控件,所以一用sleep还是睡死。
或者让异步方法回调
例如下面的代码会一直占用UI线程:
void test()
{
this.invoke(new Action(()=>
{
int n=0;
for(var i=0;i<1000000;i++)
{
n+=i
}
this.Text=n.ToString();
}));
}
//下面的就不会,只有在需要UI线程的时候使用
void test()
{
int n=0;
for(var i=0;i<1000000;i++)
{
n+=i
}
this.invoke(new Action(()=>
{ this.Text=n.ToString();
}));
}