Çok fazla parallel foreach
döngüsünü kullanıyorum. çoğunlukla verileri detaylandırmak için kullanılırlar ve bir listeye ekledikten sonra.C# Paralel.ForEach atma indexOutOfBoundException
System.Threading.Tasks.Parallel.ForEach(magazzini, m =>
{
try
{
warehouse.Add(new WAREHOUSE()
{
ID = m.Id,
NAME = m.new_name,
CODE = m.new_codice,
INTEGRATION_KEY = m.dynamics_integrationkey,
RESOURCE_ID = m.new_mobileuser == null ? Guid.Empty : m.new_mobileuser.Id
});
}
catch (Exception ex)
{
Logging.Error(authToken, string.Format("GetAllMagazzini|Magazzini|{0}", ex.InnerException));
}
});
Ben List<T>
arasında parçacığı için güvenli değil mal nedeniyle olabileceğini this old post okumak:
bu benim yöntemlerden bir örnektir. Benim sorun şu:
Sadece bu gibi döngüler için değil, aynı zamanda çok sayıda işlem ile uzun döngüler için de var. foreach
, WebService üzerinde olduğundan, zaman aşımı sorgusu kullanarak parallel.foreach
kullanmak zorunda kaldım.
indexOutOfBoundException
'dan kaçınarak parallel.foreach
'u nasıl kullanabilirim? List<T>
'u başka bir şeyde mi değiştirmeliyim?
Çok teşekkürler! sadece küçük bir soru: neden sadece ekleme işlemi varsa, performansı olumsuz etkileyecektir? Paralel olmayan veya paralel olmayan foreach kullanarak nasıl bililir? –
Bir diziyi paralel olarak yeniden boyutlandıramazsınız, paralel olarak bir bellek adresi ayarlayamazsınız. Yani bu eşzamanlılık için hayır olur. Bir dosyanın içeriğini, bir web sayfasını alırsanız, yan yana birden çok eylem gerçekleştirebilirsiniz, böylece eşzamanlılık sağlar. –