您的位置:首页 > 其它

Implementing a timeout on a function,实现对一个方法执行时间进行限制

2012-03-21 11:45 633 查看
4.0版

public static T Execute<T>(Func<T> func, int timeout)
{
T result;
TryExecute(func, timeout, out result);
return result;
}

public static bool TryExecute<T>(Func<T> func, int timeout, out T result)
{
var t = default(T);
var thread = new Thread(() => t = func());
thread.Start();
var completed = thread.Join(timeout);
if (!completed) thread.Abort();
result = t;
return completed;
}


2.0版

public delegate object ExecuteMethod(object parameter);
public static object Execute(ExecuteMethod executeMethod, object parameter, int timeout)
{
object result;
TryExecute(executeMethod, parameter, timeout, out result);
return result;
}

public static bool TryExecute(ExecuteMethod executeMethod,object parameter, int timeout, out object result)
{
object r=null;
var thread = new Thread(() => r = executeMethod(parameter));
thread.Start();
var completed = thread.Join(timeout);
if (!completed) thread.Abort();
result = r;
return completed;
}


referer:
http://stackoverflow.com/questions/1370811/implementing-a-timeout-on-a-function-returning-a-value http://kossovsky.net/index.php/2009/07/csharp-how-to-limit-method-execution-time/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐