本文整理汇总了C#中ConcurrentQueue.PopIncompleteMovie方法的典型用法代码示例。如果您正苦于以下问题:C# ConcurrentQueue.PopIncompleteMovie方法的具体用法?C# ConcurrentQueue.PopIncompleteMovie怎么用?C# ConcurrentQueue.PopIncompleteMovie使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ConcurrentQueue
的用法示例。
在下文中一共展示了ConcurrentQueue.PopIncompleteMovie方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: MovieCollector
private static void MovieCollector(IMovieService movieService, IPersonService personService,
MyApiFilmsClient client, ConcurrentQueue queue)
{
while (queue.IncompleteMoviesWaiting() || queue.IncompletePersonsWaiting())
{
if (!queue.IncompleteMoviesWaiting()) continue;
// ApiMovie is an alias for FilmIndustryNetwork.MyApiFilms.Entities.Movie
// This is to distinguish between FilmIndustryNetwork.MyApiFilms.Entities.Movie
// and FilmIndustryNetwork.Entities.Movie
ApiMovie apiMovie;
var title = queue.PopIncompleteMovie();
if (title == "---") continue;
try
{
apiMovie =
client.GetDataAsObject<MovieResponse>(title, DataSetType.Movie)?.Data?.Movies?.FirstOrDefault();
if (apiMovie == null) throw new Exception();
if (apiMovie.Type.Contains("TV")) continue;
}
catch (MyApiFilmsTimeoutException e)
{
// TODO: setup logging
FillQueueFromList(movieService, null, new [] {title}, queue, 0);
continue;
}
catch (NoMyApiFilmsResponseException e)
{
// TODO: setup logging
continue;
}
catch (Exception)
{
// TODO: setup logging
FillQueueFromList(movieService, null, new[] { title }, queue, 0);
continue;
}
var newMovie = new Movie
{
Countries = apiMovie.Countries,
FilmingLocations = apiMovie.FilmingLocations,
Genres = apiMovie.Genres,
Id = apiMovie.IdIMDB,
Languages = apiMovie.Languages,
Plot = apiMovie.Plot,
NeedsApiLookup = false,
Rated = apiMovie.Rated,
Rating = apiMovie.Rating,
Title = apiMovie.Title,
Year = apiMovie.Year
};
FillQueueFromList(null, personService, apiMovie.Actors.Select(x => x.ActorName).ToList(), queue, 1);
FillQueueFromList(null, personService, apiMovie.Directors.Select(x => x.Name).ToList(), queue, 1);
FillQueueFromList(null, personService, apiMovie.Writers.Select(x => x.Name).ToList(), queue, 1);
AddRelationshipsToQueue(new[] {apiMovie.IdIMDB}, apiMovie.Actors.Select(x => x.ActorName).ToList(), queue,
RelationTypes.ActedIn);
AddRelationshipsToQueue(new[] {apiMovie.IdIMDB}, apiMovie.Directors.Select(x => x.Name).ToList(), queue,
RelationTypes.DirectorFor);
AddRelationshipsToQueue(new[] {apiMovie.IdIMDB}, apiMovie.Writers.Select(x => x.Name).ToList(), queue,
RelationTypes.WriterOf);
var existingMovie = movieService.GetMovieByIdAsync(newMovie.Id).Result;
if (existingMovie != null) continue;
movieService.AddMovieAsync(newMovie).Wait();
}
}