Jo Shields 3c1f479b9d Imported Upstream version 4.0.0~alpha1
Former-commit-id: 806294f5ded97629b74c85c09952f2a74fe182d9
2015-04-07 09:35:12 +01:00

56 lines
1.9 KiB
C#

//-----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.Activities
{
using System.Runtime;
using System.Threading;
static class SynchronizationContextHelper
{
static WFDefaultSynchronizationContext defaultContext;
public static SynchronizationContext GetDefaultSynchronizationContext()
{
if (SynchronizationContextHelper.defaultContext == null)
{
SynchronizationContextHelper.defaultContext = new WFDefaultSynchronizationContext();
}
return SynchronizationContextHelper.defaultContext;
}
public static SynchronizationContext CloneSynchronizationContext(SynchronizationContext context)
{
Fx.Assert(context != null, "null context parameter");
WFDefaultSynchronizationContext wfDefaultContext = context as WFDefaultSynchronizationContext;
if (wfDefaultContext != null)
{
Fx.Assert(SynchronizationContextHelper.defaultContext != null, "We must have set the static member by now!");
return SynchronizationContextHelper.defaultContext;
}
else
{
return context.CreateCopy();
}
}
class WFDefaultSynchronizationContext : SynchronizationContext
{
public WFDefaultSynchronizationContext()
{
}
public override void Post(SendOrPostCallback d, object state)
{
ActionItem.Schedule(delegate(object s) { d(s); }, state);
}
public override void Send(SendOrPostCallback d, object state)
{
d(state);
}
}
}
}