我已經對此做了相當多的研究,但我似乎仍然無法做到。我必須生成一個包含1000頁的pdf文件(我使用庫),並且需要針對不同的數據執行N次。數據是相互獨立的,我可以完全並行地生成這個數據,這正是我想要做的。理想情況下,我希望在10個線程中完成此操作,每個線程在內存中生成pdf並在最後保存。假設每個pdf需要15分鐘(有1000頁),如果我按順序執行此操作,那麼對於10個pdf文件,這需要150分鐘,如果使用10個線程,則需要30分鐘。我知道人們不太喜歡穿線,但是我怎麼能加速呢?在控制檯應用程序中的不同線程中運行任務
我在看ThreadPool
,但後來我在4.0中看到這個新的Task
。我讀過如果我使用但我覺得這似乎不起作用,我可以強制每個任務在單獨的線程中運行。我也嘗試使用ThreadPool
,但由於每個PDF都是從url生成的,出於某種原因,從線程池調用WebRequest.Create(url)
方法似乎不執行?但我想我寧願讓新的任務庫工作。
這是我現在有的,但它似乎仍然順序執行。
Task myTask= Task.Factory.StartNew(() =>
{
//code for the task.
//get html content
//generate pdf file.
}
}, new CancellationToken(false), TaskCreationOptions.LongRunning, TaskScheduler.Default);
myTask.Wait();
我在做什麼錯在這裏?如果您有任何建議,請讓我知道。目前我無法超過.net 4.0。
您創建多少個任務?這只是啓動一個新的線程,然後等待結果 – flup
定義......「這似乎不適合我」。什麼是您的大致時間順序與多線程? – Kevin
我可以建議parallel.foreach嗎? – redtuna