Files
PowerShell/src/System.Management.Automation/engine/remoting/common/AsyncObject.cs
T
Steve Lee 4bc52d2358 Use consistent '(c)' for copyright symbol (#5210)
- Remove the year about copyright
- Fix casing of `All rights reserved`
- Replace Unicode characters representing single quote with a single quote
2017-10-26 14:12:19 -07:00

59 lines
1.4 KiB
C#

/********************************************************************++
Copyright (c) Microsoft Corporation. All rights reserved.
--********************************************************************/
using System.Threading;
using Dbg = System.Management.Automation.Diagnostics;
namespace System.Management.Automation.Remoting
{
/// <summary>
/// Blocks caller trying to get the value of an object of type T
/// until the value is set. After the set all future gets are
/// unblocked.
/// </summary>
internal class AsyncObject<T> where T : class
{
/// <summary>
/// Value.
/// </summary>
private T _value;
/// <summary>
/// Value was set.
/// </summary>
private ManualResetEvent _valueWasSet;
/// <summary>
/// Value.
/// </summary>
internal T Value
{
get
{
bool result = _valueWasSet.WaitOne();
if (result == false)
{
_value = null;
}
return _value;
}
set
{
_value = value;
_valueWasSet.Set();
}
}
/// <summary>
/// Constructor for AsyncObject.
/// </summary>
internal AsyncObject()
{
_valueWasSet = new ManualResetEvent(false);
}
}
}