public bool TryTransform(string input, out object transformed)
        {
            if (TryCreateUrl(input, out var url))
            {
                var lazy = new AsyncLazy <Image <Rgba32> >(async() =>
                {
                    var client   = new RestClient($"{url.Scheme}://{url.Authority}");
                    var request  = new RestRequest(url.AbsolutePath);
                    var response = await client.ExecuteGetTaskAsync(request);

                    if (response.StatusCode == HttpStatusCode.OK && ValidMimeTypes.Contains(response.ContentType))
                    {
                        return(Image.Load(response.RawBytes));
                    }

                    return(null);
                });
                lazy.Start();
                transformed = lazy;
                return(true);
            }

            transformed = null;
            return(false);
        }
예제 #2
0
 public void StartAllTasks()
 {
     _baseItems.Start();
     _skills.Start();
     _statTranslators.Start();
     _characterBaseStats.Start();
     _monsterBaseStats.Start();
 }
        public async Task AsyncLazy_StartCallsFunc()
        {
            var tcs = new TaskCompletionSource<int>();
            Func<int> func = () =>
            {
                tcs.SetResult(A.Dummy<int>());
                return A.Dummy<int>();
            };

            var lazy = new AsyncLazy<int>(func);
            lazy.Start();
            var res = await tcs.Task;
        }
예제 #4
0
        public async Task AsyncLazy_Start_CallsFunc()
        {
            var tcs = new TaskCompletionSource<bool>();
            Func<int> func = () =>
            {
                tcs.SetResult(true);
                return 13;
            };
            var lazy = new AsyncLazy<int>(func);

            lazy.Start();
            await tcs.Task;
        }
예제 #5
0
        public async Task AsyncLazy_Start_CallsFunc()
        {
            var tcs = new TaskCompletionSource <object>();
            Func <Task <int> > func = () =>
            {
                tcs.SetResult(null);
                return(Task.FromResult(13));
            };
            var lazy = new AsyncLazy <int>(func);

            lazy.Start();
            await tcs.Task;
        }
예제 #6
0
        public async Task AsyncLazy_Start_CallsFunc()
        {
            TaskCompletionSource <object> tcs  = TaskCompletionSourceExtensions.CreateAsyncTaskSource <object>();
            Func <Task <int> >            func = () =>
            {
                tcs.SetResult(null);
                return(Task.FromResult(13));
            };
            AsyncLazy <int> lazy = new AsyncLazy <int>(func);

            lazy.Start();
            await tcs.Task;
        }
예제 #7
0
        public async Task AsyncLazy_Start_CallsFunc()
        {
            var        tcs  = new TaskCompletionSource <bool>();
            Func <int> func = () =>
            {
                tcs.SetResult(true);
                return(13);
            };
            var lazy = new AsyncLazy <int>(func);

            lazy.Start();
            await tcs.Task;
        }
예제 #8
0
        public void AsyncLazy_Start_CallsFunc()
        {
            AsyncContext.Run(async () =>
            {
                var tcs = new TaskCompletionSource();
                Func<int> func = () =>
                {
                    tcs.SetResult();
                    return 13;
                };
                var lazy = new AsyncLazy<int>(func);

                lazy.Start();
                await tcs.Task;
            });
        }
예제 #9
0
        public void AsyncLazy_Start_CallsFunc()
        {
            AsyncContext.Run(async() =>
            {
                var tcs         = new TaskCompletionSource();
                Func <int> func = () =>
                {
                    tcs.SetResult();
                    return(13);
                };
                var lazy = new AsyncLazy <int>(func);

                lazy.Start();
                await tcs.Task;
            });
        }
예제 #10
0
        public NPMManagerService(IHostingEnvironment env)
        {
            this.env = env;
            // see "cached values" http://blog.stephencleary.com/2013/01/async-oop-3-properties.html
            packageJson = new AsyncLazy <JObject>(async() =>
            {
                return(await Task.Run <JObject>(() => JObject.Parse(File.ReadAllText($"{env.ContentRootPath}/ClientApp/package.json"))));
            });
            packageJson.Start();
            externals = new AsyncLazy <List <NPMExternal> >(async() =>
            {
                return(await Task.Run <List <NPMExternal> >(() => {
                    return JsonConvert.DeserializeObject <List <NPMExternal> >(File.ReadAllText($"{env.ContentRootPath}/Assets/Json/NPMExternals.json"));
                }));
            });
            externals.Start();

            // this should be built on a lazy refresh cache, for now just cache indefinitely or until it grows too large
            // see https://github.com/aspnet/Extensions/issues/769
            this.versionCache = new MemoryCache(new MemoryCacheOptions
            {
                SizeLimit = 1024
            });
        }
예제 #11
0
 public static async Task <ExternalDataProviders> GetExternalDataProviders() => await _instance.Start();