값이 긴 값을 작업에 전달하는 데 문제가 있습니다.C#의 작업에 값 매개 변수 전달
나는 각각의 루프를 통해 반복되는 ID 목록을 가지고 로컬 변수에 할당 한 다음 매개 변수로 새 작업에 전달합니다. 라운드를 반복하고 다음 ID를 처리하기 전에 작업이 완료 될 때까지 기다리지 않습니다. 나는 일련의 작업을 유지하지만 이것은 부적절하다.
loop
long ID = list[index];
task[index] = Task.Factory.StartNew(() => doWork(ID));
end loop
예를 들어 100 및 200에 대한 포함 된 목록은 내가 200를 호출 한 후 100 두 번째 작업 호출 첫 번째 작업을 할 것입니다하지만이 그래서 그렇지, doWork 두 작업 (200)를 수신하는 경우 값이 복사되면 문제가 발생합니다.
내가 위의 코드는 항상 내가 전환하는 작업 상태를 기다리는 코드를 수정 200
호출
방법을 표시합니다
class Program
{
static void Main(string[] args)
{
long num = 100;
Task one = Task.Factory.StartNew(() => doWork(num));
num = 200;
Console.ReadKey();
}
public static void doWork(long val)
{
Console.WriteLine("Method called with {0}", val);
}
}
몇 가지 간단한 콘솔 코드로 설명 할 수 있습니다 WaitingToRun
static void Main(string[] args)
{
long num = 100;
Task one = Task.Factory.StartNew(() => doWork(num));
while(one.Status == TaskStatus.WaitingToRun)
{}
num = 200;
Console.ReadKey();
}
(200)는 또한 다음과 같은
while (true)
{
if (one.Status == TaskStatus.Running | one.IsCompleted == true)
break;
}
을 시도했지만 다시 200가 표시있어 함께하지만 100 % 증거, 내가 가진 몇 실행 후 방법했다.
작업 완료까지 기다리지 않고 작업에 전달 된 값을 어떻게 보장 할 수 있습니까?
어떤 도움/제안 에이드
내 하루를 ... :) – Rohit