Imported Upstream version 4.6.0.125

Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2016-08-03 10:59:49 +00:00
parent a569aebcfd
commit e79aa3c0ed
17047 changed files with 3137615 additions and 392334 deletions

View File

@ -0,0 +1,62 @@
//-----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.Activities
{
using System.Xml;
using System.Collections.Generic;
using System.Threading;
using System.Runtime;
class AsyncInvokeOperation
{
object thisLock;
public AsyncInvokeOperation(SynchronizationContext syncContext)
{
Fx.Assert(syncContext != null, "syncContext cannot be null");
this.SyncContext = syncContext;
thisLock = new object();
}
SynchronizationContext SyncContext
{
get;
set;
}
bool Completed
{
get;
set;
}
public void OperationStarted()
{
this.SyncContext.OperationStarted();
}
public void OperationCompleted()
{
lock (thisLock)
{
Fx.AssertAndThrowFatal(!this.Completed, "Async operation has already been completed");
this.Completed = true;
}
this.SyncContext.OperationCompleted();
}
public void PostOperationCompleted(SendOrPostCallback callback, object arg)
{
lock (thisLock)
{
Fx.AssertAndThrowFatal(!this.Completed, "Async operation has already been completed");
this.Completed = true;
}
Fx.Assert(callback != null, "callback cannot be null");
this.SyncContext.Post(callback, arg);
this.SyncContext.OperationCompleted();
}
}
}