으로 대리자를 작성하는이 작품 :는 Func을
//delegate
Parallel.For(1023456789, 1033456789, delegate(long i)
{
if (i % 10000000 == 0) Console.WriteLine("{0:N0}", i);
if (IsPanDigital(i))
{
list.Add(i);
}
}
);
//lambda expression
Parallel.For(1023456789, 1033456789, i =>
{
if (i%10000000 == 0) Console.WriteLine("{0:N0}", i);
if (IsPanDigital(i))
{
list.Add(i);
}
}
);
그것은 Func을 사용하여이 논리를 다시 할 수 있습니까? 나는 여기에서 시도했다. .. 컴파일하지 않는다.
var list = new List<long>();
Parallel.For(1023456789, 1033456789, Blah(i, ref list));
public static Func<long> Blah(long i, ref List<long> list)
{
if (i % 10000000 == 0) Console.WriteLine("{0:N0}", i);
if (IsPanDigital(i))
{
list.Add(i);
}
}
시도 할 수 있는지 확인하려고합니다.
어떤 컴파일 오류가 발생 했습니까? –
여러 스레드에서 병렬로 목록에 추가하는 것은 스레드로부터 안전하지 않습니다. – dtb
'list' 매개 변수가 참조로 전달되는 이유는 무엇입니까? 어디서나 값을 변경하지 않습니다 ... –