我有一個文件集合,我需要並行處理它們。處理包括將每個文件上傳到FTP服務器作爲最後一步。該服務器上同時連接的數量是有限的,比方說,2。我用Parallel.Foreach()
這樣的:Parallel.ForEach,限制同時連接
Parallel.ForEach(files, options, ProcessFile);
難道我保證通過傳遞到Parallel.ForEach
ParallelOptions options = new ParallelOptions { MaxDegreeOfParallelism = 2 };
,我不會超過允許的連接數量?我已閱讀了很多關於如何運作,但我仍然不確定。我認爲我是FTP服務器的唯一用戶,並且在ProcessFile
期間每個連接都正確關閉。
連接限制:是* total *連接嗎?還是「每個調用節點」連接?如果前者,你需要非常確定它沒有在其他地方運行。在後者中,您仍然需要知道這個*操作*是否可以在應用程序中一次執行兩次。 –
@MarcGravell Total。每次呼叫都會打開一個新連接,並在文件上傳後關閉它。 –
我的觀點(「總計」)是:你知道你的應用程序只運行在一個節點上嗎? –