0
System.Threading.Tasks
에 문제가 있는데 왜 작동하지 않는지 이해할 수 없습니다.각각에 대한 작업 [Vb.Net]
Dim table_sec As New Dictionary(Of String, List(Of Double))
table_sec.Add("SEC01", New List(Of Double)(New Double() {10.00, 5.00}))
table_sec.Add("SEC02", New List(Of Double)(New Double() {9.00, 8.00}))
table_sec.Add("SEC03", New List(Of Double)(New Double() {5.00, 2.00}))
Dim pair As KeyValuePair(Of String, List(Of Double))
Dim tasks As New List(Of Task)()
For Each pair In table_sec
Dim t As Task = Task.Run(Sub()
Console.WriteLine("Key = " & pair.Key)
End Sub)
tasks.Add(t)
Next
Task.WaitAll(tasks.ToArray())
나는 항상
Key = SEC03
Key = SEC03
Key = SEC03
당신 잘못이 무엇인지 말해 줄 수이 결과를 얻을?
잘 모르겠지만 작업 sub의'pair.Key'는 작업이 실행될 때 목록의 마지막 쌍에 대한 참조 일 수 있습니다. 각각의 루프에 대해'pair.Key'를 프린트 할 때 그것은 세 개의 값을 모두 보여야합니다. – xander
예, '작업'외부에 3 개의 값을 표시합니다 – Mkn
[this] (https://stackoverflow.com/questions/451779/how-to-tell-a-lambda-function-to-capture-a) -copy-reference-of-a-c)가 도움이 될 수 있습니다. 하위 변수에서 외부 변수를 캡처하기 때문에 약간 혼란 스러울 수 있습니다. : D – xander