C#最好的延时方法?
C#的FOR里如何添加延时?除了sleep跟time控件for(inti=1;i<11;i++){textbox1.Text=(i)Tostring();}...
C#的FOR里如何添加延时? 除了sleep跟time控件
for(int i=1;i<11;i++)
{
textbox1.Text=(i)Tostring();
} 展开
for(int i=1;i<11;i++)
{
textbox1.Text=(i)Tostring();
} 展开
5个回答
展开全部
这里有个系统延迟转让,既可以达到延迟的效果,而且还不占用系统的资源。下面是具体方法:
http://www.glslian.com/article.asp?id=82
希望楼主早日解决问题,如果方法好记得给个满意撒。
如果有什么不明白的地方可以HI百度我~~~
http://www.glslian.com/article.asp?id=82
希望楼主早日解决问题,如果方法好记得给个满意撒。
如果有什么不明白的地方可以HI百度我~~~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
datetime。now 自己想,这个最省了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
平时我们在做winform开发的时候,有时候需要让程序休眠几秒钟,但是,如果我们直接使用 thread.sleep()函数,页面ui就会停止响应。怎么样解决呢,你可以把页面涉及到表现ui的代码放到一个单线程处理,也可以采用我下面的做法,加一个小函数ok了。
测试过很好用。
复制代码
public static bool Delay(int delayTime)
{
DateTime now = DateTime.Now;
int s;
do
{
TimeSpan spand = DateTime.Now - now;
s = spand.Seconds;
Application.DoEvents();
}
while (s < delayTime);
return true;
}
复制代码
也可以在线程里面休眠,然后在到主线程。
复制代码
void Sleep()
{
Thread thr = new Thread(() =>
{
//这里还可以处理些比较耗时的事情。
Thread.Sleep(1000);//休眠时间
this.Dispatcher.Invoke(new Action(() =>
{
DoSomeThing();//调用处理事件
}));
});
}
//休眠后你要做的事情
void DoSomeThing()
{ }
复制代码
测试过很好用。
复制代码
public static bool Delay(int delayTime)
{
DateTime now = DateTime.Now;
int s;
do
{
TimeSpan spand = DateTime.Now - now;
s = spand.Seconds;
Application.DoEvents();
}
while (s < delayTime);
return true;
}
复制代码
也可以在线程里面休眠,然后在到主线程。
复制代码
void Sleep()
{
Thread thr = new Thread(() =>
{
//这里还可以处理些比较耗时的事情。
Thread.Sleep(1000);//休眠时间
this.Dispatcher.Invoke(new Action(() =>
{
DoSomeThing();//调用处理事件
}));
});
}
//休眠后你要做的事情
void DoSomeThing()
{ }
复制代码
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
2019-04-05
展开全部
在线程中如果需要延时,尽量不要使用Sleep()函数,这样会导致时间片切到别的线程中。
使用如下函数:
//Delay function
public static void Delay(int milliSecond)
{
int start = Environment.TickCount;
while (Math.Abs(Environment.TickCount - start) < milliSecond)
{
Application.DoEvents();
}
}
或者:
//Delay us Create a waitable timer
[DllImport("kernel32.dll")]
public static extern int CreateWaitableTimer(int lpTimerAttributes,
bool bManualReset, int lpTimerName);
public static void UsDelay(int us)
{
long duetime = -10 * us;
int hWaitTimer = CreateWaitableTimer(NULL, true, NULL);
SetWaitableTimer(hWaitTimer, ref duetime, 0, NULL, NULL, false);
while (MsgWaitForMultipleObjects(1, ref hWaitTimer, false, Timeout.Infinite,
QS_TIMER)) ;
CloseHandle(hWaitTimer);
}
使用如下函数:
//Delay function
public static void Delay(int milliSecond)
{
int start = Environment.TickCount;
while (Math.Abs(Environment.TickCount - start) < milliSecond)
{
Application.DoEvents();
}
}
或者:
//Delay us Create a waitable timer
[DllImport("kernel32.dll")]
public static extern int CreateWaitableTimer(int lpTimerAttributes,
bool bManualReset, int lpTimerName);
public static void UsDelay(int us)
{
long duetime = -10 * us;
int hWaitTimer = CreateWaitableTimer(NULL, true, NULL);
SetWaitableTimer(hWaitTimer, ref duetime, 0, NULL, NULL, false);
while (MsgWaitForMultipleObjects(1, ref hWaitTimer, false, Timeout.Infinite,
QS_TIMER)) ;
CloseHandle(hWaitTimer);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询