Esempio n. 1
0
        public static PreLoad Create(Func <CancellationToken, Task <List <Uri> > > urisFunc, Func <Uri, CancellationToken, Task <byte[]> > imgsFunc, int uriCount, int imgCount, int taskCount)
        {
            var uris = Channel.CreateBounded <Uri>(uriCount);

            var imgs = Channel.CreateBounded <byte[]>(imgCount);

            var cancelSource = new CancellationTokenSource();

            var cancelAction = CreateCencelAction(uris, imgs, cancelSource);


            Task.Run(() => GetUrisTask(urisFunc, uris, cancelSource.Token))
            .ContinueWith(cancelAction);

            AddAllTask(taskCount, () => GetImageTask(imgsFunc, uris, imgs, cancelSource.Token))
            .ContinueWith(cancelAction);

            var v = new PreLoad();


            v.CancelAction = () => cancelAction(Task.CompletedTask);

            v.ReadFunc = () => imgs.Reader.ReadAsync(cancelSource.Token);

            return(v);
        }
Esempio n. 2
0
        public ViewImageListPage(ViewImageListPageInfo info)
        {
            InitializeComponent();

            m_info = info;

            var coll = new ObservableCollection <Data>();

            m_coll = coll;

            m_view.ItemsSource = coll;

            m_preLoad = m_info.Start(m_pagesText, coll);
        }