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);
|
|
}
|
|
}
|
|
} |