Files
PowerShell/src/System.Management.Automation/engine/remoting/common/AsyncObject.cs
T
Steve Lee c1c5344a88 Update copyright and license headers (#6134)
Based on standard practices, we need to have a copyright and license notice at the top of each source file. Removed existing copyrights and updated/added copyright notices for .h, .cpp, .cs, .ps1, and .psm1 files.

Updated module manifests for consistency to have Author = "PowerShell" and Company = "Microsoft Corporation". Removed multiple line breaks.

Separate PR coming to update contribution document for new source files: #6140

Manually reviewed each change.

Fix #6073
2018-02-13 09:23:53 -08:00

58 lines
1.3 KiB
C#

// Copyright (c) Microsoft Corporation. All rights reserved.
// Licensed under the MIT License.
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);
}
}
}