여러 줄의 텍스트 상자가 있고 각 줄을 다중 스레드로 처리하려고합니다. 이것은 작업을 배우는 예일 뿐이지 만 나중에 인쇄 할 때와 다른 작업을 수행 할 것입니다. 그래서의 이유가 무엇필요 이상의 작업 실행을 방지하는 방법
1
3
4
5
6
7
8
9
1
0
2
Task 1, Status RanToCompletion
Task 2, Status RanToCompletion
Task 3, Status RanToCompletion
Task 4, Status RanToCompletion
Task 5, Status RanToCompletion
Task 6, Status RanToCompletion
Task 7, Status RanToCompletion
Task 8, Status RanToCompletion
Task 9, Status RanToCompletion
Task 10, Status RanToCompletion
Task 11, Status RanToCompletion
Task 12, Status RanToCompletion
Task 13, Status RanToCompletion
Task 14, Status RanToCompletion
Task 15, Status RanToCompletion
Task 16, Status RanToCompletion
Task 17, Status RanToCompletion
Task 18, Status RanToCompletion
Task 19, Status RanToCompletion
Task 20, Status RanToCompletion
Task 21, Status RanToCompletion
Task 22, Status RanToCompletion
Task 23, Status RanToCompletion
Task 24, Status RanToCompletion
Task 25, Status RanToCompletion
Task 26, Status RanToCompletion
Task 27, Status RanToCompletion
Task 28, Status RanToCompletion
Task 29, Status RanToCompletion
: 나는 다음과 같은 출력을 얻을
List<Task> tasks = new List<Task>();
for (int i = 0; i < txtSearchTerms.Text.Length; i++)
{
int tmp = i;
Task t = new Task(() =>
{
Console.WriteLine(txtSearchTerms.Text[tmp]);
});
tasks.Add(t);
t.Start();
}
Task.WaitAll(tasks.ToArray());
foreach(Task t in tasks)
{
Console.WriteLine("Task {0}, Status {1}", t.Id, t.Status);
}
: 다음 코드를 사용하여
1
2
3
4
5
6
7
8
9
10
:
예를 들어의 내 텍스트 상자에 포함 된 가정 해 봅시다 많은 "빈 공간"과 여분의 작업이 아무 이유없이 도망 치고 그것을 막는 방법?
도움을 주시면 감사하겠습니다.
당신의 텍스트 상자는뿐만 아니라 당신이 포함하고 각각의 특성을 고려하여, 개행 문자가 포함 된'Lines' 속성을 사용하여 한 번에 각 라인이 소요됩니다. – hnefatl
'txtSearchTerms.Text [tmp] .Trim()'인쇄 –
taks를 제한하려면 (그리고 이것을 향상시키기 위해)'Parallel.For()'를 사용하십시오. 선택 사항으로 MaxDegree 설정을 사용하지만 필요 없다고 생각합니다. –