コード例 #1
0
        private static async Task <ServiceResultDto[]> GetResultsAsync(ServiceIdentifierDto[] identifiers)
        {
            using (var repository = new ServiceProviderRepository())
            {
                var tasks = identifiers
                            .Select(async item =>
                {
                    try
                    {
                        var serviceMapping = await repository.GetAsync(it => it.Service.Name == item.Name &&
                                                                       it.Group == item.Group).ConfigureAwait(false);

                        var addr = new ServiceInfoDto
                        {
                            Name    = item.Name,
                            Group   = item.Group,
                            Address = serviceMapping.Address,
                            Data    = serviceMapping.Data,
                        };

                        var result = new ServiceResultDto
                        {
                            Identifier   = item,
                            ServiceInfos = new[] { addr }
                        };

                        return(result);
                    }
                    catch (Exception ex)
                    {
                        LogHelper.Error(ex);
                    }
                    return(null);
                })
                            .ToArray();

                await Task.WhenAll(tasks).ConfigureAwait(false);

                var results = tasks
                              .Select(it => it.Result)
                              .Where(it => it != null)
                              .ToArray();
                return(results);
            }
        }
コード例 #2
0
ファイル: RegistryService.cs プロジェクト: chrishaly/RpcLite
		private static async Task<ServiceResultDto[]> GetResultsAsync(ServiceIdentifierDto[] identifiers)
		{
			using (var repository = new ServiceProviderRepository())
			{
				var tasks = identifiers
					.Select(async item =>
					{
						try
						{
							var serviceMapping = await repository.GetAsync(it => it.Service.Name == item.Name
								&& it.Group == item.Group).ConfigureAwait(false);

							var addr = new ServiceInfoDto
							{
								Name = item.Name,
								Group = item.Group,
								Address = serviceMapping.Address,
								Data = serviceMapping.Data,
							};

							var result = new ServiceResultDto
							{
								Identifier = item,
								ServiceInfos = new[] { addr }
							};

							return result;
						}
						catch (Exception ex)
						{
							LogHelper.Error(ex);
						}
						return null;
					})
					.ToArray();

				await Task.WhenAll(tasks).ConfigureAwait(false);

				var results = tasks
						.Select(it => it.Result)
						.Where(it => it != null)
						.ToArray();
				return results;
			}
		}