jjzjj

thread-sleep

全部标签

c# - Thread.sleep vs Monitor.Wait vs RegisteredWaitHandle?

(以下项目有不同的目标,但我很想知道它们是如何“暂停”的)问题Thread.sleep-它会影响系统的性能吗?它会占用线程等待吗?Monitor.Wait呢?他们“等待”的方式有什么不同?他们会在等待时占用线程吗?RegisteredWaitHandle怎么样?此方法接受等待时执行的委托(delegate)句柄发出信号。在等待期间,它不会占用线程。所以一些线程被暂停并且可以被委托(delegate)唤醒,而其他线程只是等待?旋转?有人可以把事情说清楚吗?编辑http://www.albahari.com/threading/part2.aspx 最佳答案

c# - 何时处理带有子任务的 System.Threading.Task?

我有一个启动多个子任务的任务。(例如,任务A创建B、C、D、E、F)。我还创建了一个System.Threading.Timer以每10秒轮询一次数据库,以检查计划的项目是否已按请求取消。如果是,它会设置CancellationTokenSource以便任务知道要取消。每个子任务,在本例中为B、C、D、E、F,将在适当的时候取消(它们循环遍历文件并四处移动)。由于Task实现了IDisposable,我想知道从再次调用Task.WaitAll是否是个好主意catchblock,等待取消传播。虽然将处理取消请求,但子任务可能处于循环中间并且在完成之前无法取消但是,根据MSDN:Alway

c# - C#5.0 中的非阻塞 sleep (类似于 JavaScript 中的 setTimeout)

在新的“异步”样式中,JavaScript的setTimeout(callback,milliseconds)与C#的模拟是什么?例如,如何将以下延续传递风格的JavaScript重写为支持异步的现代C#?JavaScript:functionReturnItAsync(message,callback){setTimeout(function(){callback(message);},1000);}C#-5.0:publicstaticasyncTaskReturnItAsync(stringit){//returnawait...?} 最佳答案

c# - 串行调用 Threading.Timer.Change() 会重置计时器的时钟吗?

如果我调用Threading.Timer.Change()连续两次,下一次线程什么时候运行?例如:myTimer.Change(5000,Timeout.Infinite);//Only2secondspass.myTimer.Change(5000,Timeout.Infinite);在此之后,线程会在3秒或5秒后运行吗?我希望答案是后者,每次调用Change()都会重置计时器。如果没有,我将需要找到解决此问题的方法。 最佳答案 它将在5秒后运行。调用Change将重置初始计数。 关于

c# - Thread.IsAlive 和 Thread.ThreadState==ThreadState.Running

我正在使用if(Thread.IsAlive)检查线程的状况。该线程中正在运行一个表单。有时在执行过程中,即使窗体保持打开状态,对Thread.IsAlive的调用似乎评估为false。我想用if(Thread.ThreadState==ThreadState.Running)执行相同的检查。这是正确的做法吗?如果不是,可能的解决方法是什么? 最佳答案 msdnThread.IsAlive属性如果此线程已启动且未正常终止或中止,则为true;否则为假。msdn线程.ThreadState运行线程已经启动,没有阻塞,也没有挂起的Thr

C# Threading.Suspend 已过时,线程已被弃用?

在我的应用程序中,我正在通过另一个线程(GUI线程除外)执行文件读取。有两个按钮分别用于暂停和恢复线程。privatevoidBtnStopAutoUpd_Click(objectsender,EventArgse){autoReadThread.Suspend();}privatevoidBtnStartAutoUpd_Click(objectsender,EventArgse){autoReadThread.Resume();}但我正面临这个警告,Thread.Suspendhasbeendeprecated.PleaseuseotherclassesinSystem.Thread

c# - 在退出程序之前等待 System.Threading.Timer 回调完成

我有一个List.每个计时器以可配置的时间间隔触发(默认10分钟)。所有调用相同的回调方法(具有不同的参数)。回调方法可能需要几秒钟才能完成其工作。当程序终止时,回调方法的执行似乎立即停止(我没看错吗?)。如何在退出程序之前优雅地等待任何当前正在执行的回调方法完成? 最佳答案 您可以使用WaitHandler参数处理所有计时器。仅当回调方法完成时才会向此处理程序发出信号(如规范所述:“在所有当前排队的回调完成之前,计时器不会被释放。”)voidWaitUntilCompleted(ListmyTimers){ListwaitHnd=

c# - 线程 sleep /等到新的一天

我在一个循环中运行一个进程,它对它每天执行的操作数有限制。当它达到这个限制时,我目前已经让它循环检查时间以查看它是否是新日期。最好的选择是:不断检查新日期的时间计算到午夜还有多少秒,然后睡那段时间还有别的吗? 最佳答案 不要为这种类型的事情使用Thread.Sleep。使用Timer并计算您需要等待的时间。varnow=DateTime.Now;vartomorrow=now.AddDays(1);vardurationUntilMidnight=tomorrow.Date-now;vart=newTimer(o=>{/*Dowor

c# - 为什么不无缘无故地使用 thread.sleep,并向程序员解释

在我们的项目中传递代码时,我遇到了一个web方法,它的末尾有这段代码:thread.sleep(6000);returntrue;现在,这样做是为了延迟来自客户端的jQueryajax调用,并且ajax动画将显示更长的时间。在我看来这是非常错误的。UI和服务器端之间不应该有这种连接。如果他希望动画时间更长,他可以在客户端使用setTimeOut函数。这是我的问题:我如何向程序员解释为什么这是错误的?不仅仅是因为客户端/服务器的事情,还因为为什么要在网站上调用thread.sleep? 最佳答案 延迟时:您正在使用/阻塞线程你正在消耗

c# - Thread.CurrentThread.Join() 什么时候有意义?

调用Thread.CurrentThread.Join()的效果是什么,是否/何时调用它有意义? 最佳答案 真的吗CurrentThread.Join()你在真实代码中看到的——我有点怀疑,除非它是一些防止其他线程加入当前线程的hack——或者是它CurrentThread.Join(someTimeout)后者相当于Thread.Sleep(someTimeout)如果您处于GUI/COM情况,除了加入当前线程允许消息泵送继续。 关于c#-Thread.CurrentThread.Jo