YanCheng_Metrology/Assets/Plugins/UniRx/Scripts/System/IOptimizedObservable.cs

27 lines
770 B
C#

using System;
namespace UniRx
{
public interface IOptimizedObservable<T> : IObservable<T>
{
bool IsRequiredSubscribeOnCurrentThread();
}
public static class OptimizedObservableExtensions
{
public static bool IsRequiredSubscribeOnCurrentThread<T>(this IObservable<T> source)
{
var obs = source as IOptimizedObservable<T>;
if (obs == null) return true;
return obs.IsRequiredSubscribeOnCurrentThread();
}
public static bool IsRequiredSubscribeOnCurrentThread<T>(this IObservable<T> source, IScheduler scheduler)
{
if (scheduler == Scheduler.CurrentThread) return true;
return IsRequiredSubscribeOnCurrentThread(source);
}
}
}