本文整理汇总了C#中ConcurrentQueue.PopIncompletePerson方法的典型用法代码示例。如果您正苦于以下问题:C# ConcurrentQueue.PopIncompletePerson方法的具体用法?C# ConcurrentQueue.PopIncompletePerson怎么用?C# ConcurrentQueue.PopIncompletePerson使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ConcurrentQueue
的用法示例。
在下文中一共展示了ConcurrentQueue.PopIncompletePerson方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PersonCollector
private static void PersonCollector(IPersonService personService, IMovieService movieService,
MyApiFilmsClient client, ConcurrentQueue queue)
{
while (queue.IncompleteMoviesWaiting() || queue.IncompletePersonsWaiting())
{
if (!queue.IncompletePersonsWaiting()) continue;
// ApiPerson is an alias for FilmIndustryNetwork.MyApiFilms.Entities.Person
// This is to distinguish between FilmIndustryNetwork.MyApiFilms.Entities.Person
// and FilmIndustryNetwork.Entities.Person
ApiPerson apiPerson;
var name = queue.PopIncompletePerson();
if (name == "---") continue;
try
{
apiPerson =
client.GetDataAsObject<PersonResponse>(name, DataSetType.Person)?.Data?.Names?.FirstOrDefault();
if (apiPerson == null) throw new Exception();
}
catch (MyApiFilmsTimeoutException e)
{
// TODO: setup logging
FillQueueFromList(null, personService, new [] {name}, queue, 1);
continue;
}
catch (NoMyApiFilmsResponseException e)
{
// TODO: setup logging
continue;
}
catch (Exception)
{
// TODO: setup logging
FillQueueFromList(null, personService, new[] { name }, queue, 1);
continue;
}
var person = new Person
{
Bio = apiPerson.Bio,
BirthName = apiPerson.BirthName,
DateOfBirth = apiPerson.DateOfBirth,
Id = apiPerson.IdIMDB,
Name = apiPerson.Name,
NeedsApiLookup = false,
PlaceOfBirth = apiPerson.PlaceOfBirth,
UrlPhoto = apiPerson.UrlPhoto
};
FillQueueFromList(movieService, null, apiPerson.Filmographies
.Where(x => x.Section == "Actor" || x.Section == "Director" || x.Section == "Writer")
.SelectMany(f => f.Filmography.Select(m => m.Title)).ToList(), queue, 0);
AddRelationshipsToQueue(
apiPerson.Filmographies
.Where(x => x.Section == "Actor")
.SelectMany(f => f.Filmography
.Where(mm => mm.Remarks != null && !mm.Remarks.Contains("(TV Series)"))
.Select(m => m.IMDBId)), new[] {person.Name}, queue,
RelationTypes.ActedIn);
AddRelationshipsToQueue(
apiPerson.Filmographies
.Where(x => x.Section == "Director")
.SelectMany(f => f.Filmography
.Where(mm => mm.Remarks != null && !mm.Remarks.Contains("(TV Series)"))
.Select(m => m.IMDBId)), new[] { person.Name }, queue,
RelationTypes.DirectorFor);
AddRelationshipsToQueue(
apiPerson.Filmographies
.Where(x => x.Section == "Writer")
.SelectMany(f => f.Filmography
.Where(mm => mm.Remarks != null && !mm.Remarks.Contains("(TV Series)"))
.Select(m => m.IMDBId)), new[] { person.Name }, queue,
RelationTypes.WriterOf);
if (personService.GetPersonByNameAsync(person.Name).Result != null) continue;
personService.AddPersonAsync(person).Wait();
}
}