我有一個包含各種提要URL的文本文件。我讀的所有URL的使用下面的代碼集合(IEnumerable的)中:Parallel.ForEach並無法從關閉的TextReader中讀取異常
var URLs = File.ReadLines(Path.GetFullPath(@"Resources\FeedList.txt"));
下一行,我打印總數:
Console.WriteLine("Total Number of feeds : {0}",URLs.Count());
而且我在使用中並行之後。 ForEach構造,執行一些邏輯,對應於每個URL。以下是代碼,我使用:
Parallel.ForEach(URLs, (url) =>
{
// Some business logic
});
的問題是,我得到以下情況例外,只要我的代碼添加到打印的URL,即它調用的代碼中,張數()方法在URLs對象上。例外:
Total Number of feeds : 78
Unhandled Exception: System.AggregateException: One or more errors occurred. ---> System.ObjectDisposedException: Cannot read from a closed TextReader.
at System.IO.__Error.ReaderClosed()
at System.IO.StreamReader.ReadLine()
at System.IO.File.<InternalReadLines>d__0.MoveNext()
at System.Collections.Concurrent.Partitioner.DynamicPartitionerForIEnumerable`1.InternalPartitionEnumerator.GrabNextChunk(Int32 requestedChunkSize)
at System.Collections.Concurrent.Partitioner.DynamicPartitionEnumerator_Abstract`2.MoveNext()
at System.Threading.Tasks.Parallel.<>c__DisplayClass32`2.<PartitionerForEachWorker>b__30()
at System.Threading.Tasks.Task.InnerInvoke()
at System.Threading.Tasks.Task.InnerInvokeWithArg(Task childTask)
at System.Threading.Tasks.Task.<>c__DisplayClass7.<ExecuteSelfReplicating>b__6(Object)
--- End of inner exception stack trace ---
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Parallel.PartitionerForEachWorker[TSource,TLocal](Partitioner`1 source, ParallelOptions parallelOptions, Action`1 simpleBody, Action`2 bodyWi
at System.Threading.Tasks.Parallel.ForEachWorker[TSource,TLocal](IEnumerable`1 source, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Action`3
at System.Threading.Tasks.Parallel.ForEach[TSource](IEnumerable`1 source, Action`1 body)
at DiscoveringGroups.Program.Main(String[] args) in C:\Users\Pawan Mishra\Documents\Visual Studio 2010\Projects\ProgrammingCollectiveIntelligence\DiscoveringGroups\Pro
Press any key to continue . . .
如果我刪除/註釋掉打印計數值的行,則Parallel.ForEach循環運行良好。
有沒有人有任何想法是什麼錯在這裏?
「某些業務邏輯」中發生了什麼? –