Pessoal, estou tendo um problema que aparece de vez em quando, tenho essa função, que ainda não está completa (pois faltam muitos cálculos e condições). as vezes no final quando dou o retono.OrderBy(...) está dando problema de nulo, os dados desse ponto ficam todos nulos, não sei se alguém conseguiria me ajudar.
private Task<List<Ponto_Sensivel_Simulacao>> Get_Pontos_Sensiveis_Simulacao()
{
Ponto_SensivelController ponto_SensivelController = new Ponto_SensivelController();
var Pontos = ponto_SensivelController.GetPonto_Sensivel().ToList();
var retono = new List<Ponto_Sensivel_Simulacao>();
var tasks = Pontos.Select(ponto =>
{
return Task.Factory.StartNew(() =>
{
var ponto_Possivel_Derramamento = dados_Simulacao.ponto_Possivel_Derramamento;
var ponto_Simulacao = new Ponto_Sensivel_Simulacao();
ponto_Simulacao.Ponto_Sensivel_ID = ponto.Ponto_Sensivel_ID;
ponto_Simulacao.Ponto_Sensivel_Latitudade = ponto.Ponto_Sensivel_Latitudade;
ponto_Simulacao.Ponto_Sensivel_Longitudade = ponto.Ponto_Sensivel_Longitudade;
ponto_Simulacao.Ponto_Sensivel_Nome = ponto.Ponto_Sensivel_Nome;
ponto_Simulacao.Ponto_Sensivel_Simulacao_Distancia = CalcularDistancia(
ponto_Possivel_Derramamento.Ponto_Possivel_Derramamento_Corpo_Hidrico_Latitudade,
ponto_Possivel_Derramamento.Ponto_Possivel_Derramamento_Corpo_Hidrico_Longitudade,
ponto.Ponto_Sensivel_Latitudade,
ponto.Ponto_Sensivel_Longitudade
);
ponto_Simulacao.Ponto_Sensivel_Simulacao_Data_Alcance = dados_Simulacao.Dados_Simulacao_Data.AddSeconds(ponto_Simulacao.Ponto_Sensivel_Simulacao_Distancia);
ponto_Simulacao.Ponto_Sensivel_Simulacao_Prioridade = 1;
var DiferencaEmsegundos = (ponto_Simulacao.Ponto_Sensivel_Simulacao_Data_Alcance - dados_Simulacao.Dados_Simulacao_Data).TotalSeconds;
var DiferencaHoras = Math.Floor((DiferencaEmsegundos / 3600));
var DiferencaMinutos = Math.Floor((DiferencaEmsegundos % 3600) / 60);
ponto_Simulacao.Ponto_Sensivel_Simulacao_Tempo = DiferencaHoras.ToString() + ":" + DiferencaMinutos.ToString() + " h";
if (ListaPontosTemp.Contains(ponto.Ponto_Sensivel_Nome))
//if (ponto_Simulacao.Ponto_Sensivel_Simulacao_Distancia < 10000)
{
retono.Add(ponto_Simulacao);
}
});
});
return Task.WhenAll(tasks).ContinueWith(x =>
{
return retono.OrderBy(y => y.Ponto_Sensivel_Simulacao_Data_Alcance).ToList();
});
}