Esempio n. 1
0
        private static async void SetBackgroundInternal(GLTextureReader reader)
        {
            using (reader)
            {
                CancellationTokenSource cancelationToken = new CancellationTokenSource();
                lock (BackgroundLock)
                {
                    if (_cancelationToken != null)
                    {
                        _cancelationToken.Cancel();
                        _cancelationToken.Dispose();
                    }
                    _cancelationToken = cancelationToken;
                }

                GLTexture texture = await reader.ReadTextureAsync(cancelationToken.Token);

                lock (BackgroundLock)
                {
                    if (cancelationToken.IsCancellationRequested)
                    {
                        texture.SafeDispose();
                    }
                    else
                    {
                        SetBackground(texture);
                    }
                }
            }
        }
Esempio n. 2
0
        public static void SetBackground(GLTextureReader reader)
        {
            if (reader == null)
            {
                SetBackground((GLTexture)null);
                return;
            }

            ThreadPool.QueueUserWorkItem(state => SetBackgroundInternal(reader));
        }