public override bool hasFinished(ThreadJob job)
        {
            if (job == mainPageJob)
            {
                JobWebPageDownload res = job as JobWebPageDownload;
                this.mainPage = res.getResult();

                pictureLoadJob = getPictureLoadJob();
                if (pictureLoadJob != null) {
                    addJob(pictureLoadJob);
                } else {
                    pictureLoadJobDone = true;
                }

                JobIMDBNameParser parseJob = new JobIMDBNameParser(mainPage, person);
                parseJob.run();
                mainPageJobDone = true;

            } else if (job == pictureLoadJob) {
                person.image = ((JobLoadImage)job).getResult();
                pictureLoadJobDone = true;
            }

            bool result = false;
            lock (this) {
                if (mainPageJobDone && pictureLoadJobDone) {
                    result = true;
                    mainPageJobDone = false;
                }
            }

            return result;
        }
        public override bool run()
        {
            JobWebPageDownload mainPageJob = new JobWebPageDownload(IMDBUtil.getURLToName(person.imdbID));
            mainPageJob.run();
            this.mainPage = mainPageJob.getResult();
            if (mainPage == null) {
                return false;
            }
            JobLoadImage pictureJob = getPictureLoadJob();
            if (pictureJob != null) {
                pictureJob.run();
                person.image = pictureJob.getResult();
            }

            JobIMDBNameParser parseJob = new JobIMDBNameParser(mainPage, person);
            parseJob.run();
            return true;
        }