mirror of
https://github.com/aphrody-labs/PowerShell.git
synced 2026-10-15 06:09:09 +00:00
- Remove the year about copyright - Fix casing of `All rights reserved` - Replace Unicode characters representing single quote with a single quote
59 lines
1.4 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|