public static void SetDefaultFactory(PromiseBackend backend) { lock (_syncRoot) { if (_factory == null) { _factory = new PromiseFactory(backend); _backend = null; if (backend == PromiseBackend.Default) { _backendType = PromiseFactory.DefaultBackend; } else { _backendType = backend; } } else if (_backend != null) { _factory.Dispose(); _factory = new PromiseFactory(backend); _backend = null; if (backend == PromiseBackend.Default) { _backendType = PromiseFactory.DefaultBackend; } else { _backendType = backend; } } else if (_backendType != backend) { _factory.Dispose(); _factory = new PromiseFactory(backend); if (backend == PromiseBackend.Default) { _backendType = PromiseFactory.DefaultBackend; } else { _backendType = backend; } } } }
private static IBackend CreateBackend(PromiseBackend backend) { switch (backend) { case PromiseBackend.Default: return(CreateBackend(DefaultBackend)); case PromiseBackend.DotNet: return(new TplBackend()); case PromiseBackend.MooThreadPool: return(new MooBackend()); default: throw new InvalidProgramException("Unknown backend type: " + backend.ToString()); } }
public PromiseFactory(PromiseBackend backend) : this(CreateBackend(backend)) { }
public static PromiseFactory CreateFactory(PromiseBackend backend) { return(new PromiseFactory(backend)); }