mirror of
https://github.com/aphrody-labs/PowerShell.git
synced 2026-10-14 13:49:09 +00:00
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
58 lines
1.3 KiB
C#
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);
|
|
}
|
|
}
|
|
}
|