Exemplo n.º 1
0
        public void GenerateTasksAndDownload()
        {
            var countOofTaskYShouldBeGenerated = (int)Math.Round(Math.Pow(2, Z));
            var countOfFullYTask = 0;

            for (int y = 0; y < countOofTaskYShouldBeGenerated; y++)
            {
                var currentY = y;
                lock (taskOfYs)
                {
                    Task.Factory.StartNew(() =>
                    {
                        var taskofY = new TaskOfY()
                        {
                            UrlTemplate = string.Format(UrlTemplate, "", currentY.ToString(), "{2}"),
                            Y           = currentY,
                            Z           = Z
                        };
                        taskOfYs.Add(taskofY);

                        taskofY.TasksGeneratedIncreasedByEvent += (s, e) =>
                        {
                            TasksGeneratedIncreasedByEvent?.Invoke(this, e);
                        };

                        if (!Directory.Exists(Path.Combine(DirPath, $"{taskofY.Y}")))
                        {
                            taskofY.DirPath = Directory.CreateDirectory(Path.Combine(DirPath, $"{taskofY.Y}")).FullName;
                        }
                        taskofY.DirPath = new DirectoryInfo(Path.Combine(DirPath, $"{taskofY.Y}")).FullName;

                        taskofY.TasksFininshedIncreasedByEvent += (s, e, size) =>
                        {
                            TasksFininshedIncreasedByEvent?.Invoke(this, e, size);
                        };

                        taskofY.GenerateTasksAndDownload();



                        //Console.WriteLine(taskofY.Y);
                        //Console.WriteLine(taskofY.UrlTemplate);

                        ////该Z层的所有Y均完成创建
                        //if (taskOfYs.Count == countOofTaskYShouldBeGenerated)
                        //{
                        //    AllTasksGeneratedEvent?.Invoke(this);
                        //    //if (this.AllTasksGeneratedEvent != null)
                        //    //{
                        //    //    //this.AllTasksGeneratedEvent
                        //    //}
                        //}
                    });
                }
            }
        }
Exemplo n.º 2
0
        public void GenerateTasksAndDownload()
        {
            var countOofTaskXShouldBeGenerated = (int)Math.Round(Math.Pow(2, Z));

            for (int x = 0; x < countOofTaskXShouldBeGenerated; x++)
            {
                var currentX = x;
                lock (taskOfXes)
                {
                    Task.Factory.StartNew(() =>
                    {
                        var taskOfX = new TaskOfX()
                        {
                            Url      = string.Format(UrlTemplate, "", "", currentX.ToString()),
                            X        = currentX,
                            Y        = Y,
                            Z        = Z,
                            Filename = Path.Combine(DirPath, $"{currentX}.png")
                        };


                        taskOfX.Finished += (sender, size) =>
                        {
                            if (TasksFininshedIncreasedByEvent != null)
                            {
                                TasksFininshedIncreasedByEvent.Invoke(this, 1, size);
                            }
                        };


                        if (TasksGeneratedIncreasedByEvent != null)
                        {
                            TasksGeneratedIncreasedByEvent.Invoke(this, 1);
                        }

                        Task.Factory.StartNew(() =>
                        {
                            taskOfXes.Add(taskOfX);
                        });

                        taskOfX.Download();



                        //Console.WriteLine( taskOfX.Url);
                        //Console.WriteLine($"{taskOfXes.Count} / {countOofTaskXShouldBeGenerated} {taskOfX.Url}");
                        if (taskOfXes.Count == countOofTaskXShouldBeGenerated)
                        {
                            AllTasksGeneratedEvent?.Invoke(this);
                        }
                    });
                }
            }
        }
Exemplo n.º 3
0
        public void GenerateTasksAndDownload(string urlTemplate, string levels, string servers)
        {
            var split = levels.Split(',');
            var levelsShouldBeDone      = split.Length;
            var levelsShouldBeGenerated = split.Length;

            foreach (var level in split)
            {
                var lev       = int.Parse(level);
                var taskOfZ_0 = new TaskOfZ()
                {
                    UrlTemplate = string.Format(urlTemplate, lev.ToString(), "{1}", "{2}"),
                    Z           = lev
                };
                lock (this.TaskOfZs)
                {
                    TaskOfZs.Add(taskOfZ_0);
                }

                taskOfZ_0.TasksGeneratedIncreasedByEvent += (s, e) =>
                {
                    TasksGeneratedIncreasedByEvent?.Invoke(this, e);
                };


                //Directory.CreateDirectory($"{tz.Z}");
                if (!Directory.Exists($"{taskOfZ_0.Z}"))
                {
                    taskOfZ_0.DirPath = Directory.CreateDirectory($"{taskOfZ_0.Z}").FullName;
                }
                taskOfZ_0.DirPath = new DirectoryInfo($"{taskOfZ_0.Z}").FullName;


                taskOfZ_0.TasksFininshedIncreasedByEvent += (s, e, size) =>
                {
                    this.TasksFininshedIncreasedByEvent?.Invoke(this, e, size);
                };
                taskOfZ_0.GenerateTasksAndDownload();
            }
        }