mirror of
https://github.com/ICDSystems/ICD.Common.Utils.git
synced 2026-02-17 21:54:58 +00:00
Adding method for waiting, with timeout, until a condition is true
This commit is contained in:
@@ -12,6 +12,28 @@ namespace ICD.Common.Utils
|
||||
{
|
||||
public static class ThreadingUtils
|
||||
{
|
||||
/// <summary>
|
||||
/// Wait until the given condition is true.
|
||||
/// </summary>
|
||||
/// <param name="condition"></param>
|
||||
/// <param name="timeout"></param>
|
||||
/// <returns></returns>
|
||||
public static bool Wait(Func<bool> condition, long timeout)
|
||||
{
|
||||
if (condition == null)
|
||||
throw new ArgumentNullException("condition");
|
||||
|
||||
DateTime end = IcdEnvironment.GetLocalTime().AddMilliseconds(timeout);
|
||||
|
||||
while (!condition())
|
||||
{
|
||||
if (IcdEnvironment.GetLocalTime() >= end)
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Puts the current thread to sleep for the given amount of time.
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user