如何对操作施加时间限制

| 我有一个(可能)很长的操作a,我要对其施加限制时间约束t(以毫秒为单位)。如果操作a花费的时间少于t毫秒,那么我将返回操作a的答案;否则,我想中止该操作并返回正确的错误代码,说明已超过时间限制。 如何在C#中完成此操作?如果您还有其他与语言无关的想法可以随时分享?     
已邀请:
最好是将其包装为
Task<T>
Task
,然后使用
Wait
。 看这里。
Task t = new Task(DoStuff());
t.Wait(1000);
    
您可以启动两个线程:一个线程用于“ a”操作,另一个线程具有计时器。 如果计时器线程完成,它将检查“ a”线程是否已完成。如果不是,请中止(仍在运行)线程并返回超时错误代码。 如果操作\“ a \”在计时器线程之前完成,则只需终止计时器线程,然后返回结果即可。     
在方法上使用BeginInvoke,而不是一段时间后检查IAsyncResult.IsCompleted。如果完成,请使用EndInvoke获得结果。     
关于此内容已经有一些资料,请参见实现C#通用超时 一般主题是拥有一个异步线程(委托,任务等)以保持时间。请特别注意Thread.Abort(),如果可以的话,应使任务保持运行状态,或者使用某种干净的取消方式。     

要回复问题请先登录注册