forked from zxl/LaboratoryProtection
27 lines
770 B
C#
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);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|