52 lines
1.4 KiB
C#
52 lines
1.4 KiB
C#
// Licensed to the .NET Foundation under one or more agreements.
|
|
// The .NET Foundation licenses this file to you under the MIT License.
|
|
// See the LICENSE file in the project root for more information.
|
|
|
|
using System.Threading;
|
|
|
|
namespace System.Reactive.Concurrency
|
|
{
|
|
internal static class SynchronizationContextExtensions
|
|
{
|
|
public static void PostWithStartComplete<T>(this SynchronizationContext context, Action<T> action, T state)
|
|
{
|
|
context.OperationStarted();
|
|
|
|
context.Post(
|
|
o =>
|
|
{
|
|
try
|
|
{
|
|
action((T)o!);
|
|
}
|
|
finally
|
|
{
|
|
context.OperationCompleted();
|
|
}
|
|
},
|
|
state
|
|
);
|
|
}
|
|
|
|
public static void PostWithStartComplete(this SynchronizationContext context, Action action)
|
|
{
|
|
context.OperationStarted();
|
|
|
|
context.Post(
|
|
_ =>
|
|
{
|
|
try
|
|
{
|
|
action();
|
|
}
|
|
finally
|
|
{
|
|
context.OperationCompleted();
|
|
}
|
|
},
|
|
null
|
|
);
|
|
}
|
|
}
|
|
}
|