先修复一下,错误的场景 删除不必要的钓场资产 修复into场景 update:更新meta文件,修复报错 update:修复资源 修复第一章节建造 修复建造第三章 update:删除多余内容 update:更新README.md update:还原图标 update:更新README update:更新配置
42 lines
1.4 KiB
C#
42 lines
1.4 KiB
C#
using System;
|
|
|
|
namespace UniRx.Operators
|
|
{
|
|
// implements note : all field must be readonly.
|
|
public abstract class OperatorObservableBase<T> : IObservable<T>, IOptimizedObservable<T>
|
|
{
|
|
readonly bool isRequiredSubscribeOnCurrentThread;
|
|
|
|
public OperatorObservableBase(bool isRequiredSubscribeOnCurrentThread)
|
|
{
|
|
this.isRequiredSubscribeOnCurrentThread = isRequiredSubscribeOnCurrentThread;
|
|
}
|
|
|
|
public bool IsRequiredSubscribeOnCurrentThread()
|
|
{
|
|
return isRequiredSubscribeOnCurrentThread;
|
|
}
|
|
|
|
public IDisposable Subscribe(IObserver<T> observer)
|
|
{
|
|
var subscription = new SingleAssignmentDisposable();
|
|
|
|
// note:
|
|
// does not make the safe observer, it breaks exception durability.
|
|
// var safeObserver = Observer.CreateAutoDetachObserver<T>(observer, subscription);
|
|
|
|
if (isRequiredSubscribeOnCurrentThread && Scheduler.IsCurrentThreadSchedulerScheduleRequired)
|
|
{
|
|
Scheduler.CurrentThread.Schedule(() => subscription.Disposable = SubscribeCore(observer, subscription));
|
|
}
|
|
else
|
|
{
|
|
subscription.Disposable = SubscribeCore(observer, subscription);
|
|
}
|
|
|
|
return subscription;
|
|
}
|
|
|
|
protected abstract IDisposable SubscribeCore(IObserver<T> observer, IDisposable cancel);
|
|
}
|
|
} |