1
在一些用戶的幫助下,他們能夠提供幫助以讀取文本文件,在具有指定計數的新文件夾中的組中創建新文件。例如,我正在閱讀的文本文件有10,000行(在這種情況下)。我將它分組爲每行讀取1000行並創建一個新文件夾。預期的輸出應該是由每個文件夾中的2,000個對象(1個圖像文件,1個元數據文件)創建的10個文件夾。但是,實際輸出是使用每個文件夾中的正或負2,000個對象創建的10個文件夾。實際輸出並不總是將相應的1個圖像文件與其1個元數據文件放在一起。有時他們在同一個文件夾中(它應該是這樣),而有些時候他們在單獨的文件夾中(不應該這樣做)。在新文件夾中創建新文件組不一致
我跨過了程序,不明白爲什麼發生這種情況。以下是我用來執行上述操作的代碼。
private string[] sourceline = new string[] {};
private string folder = string.Empty;
private int bs = 1000;
...
Thread t1 = new Thread(
new ThreadStart(() =>
{
sourceline = File.ReadAllLines(@"C:\guids.txt")
int batchcount = (sourceline.Length/bs) + 1;
for (int i = 0; i < batchcount; i++)
{
Directory.CreateDirectory(@"C:\zz\" + i.ToString());
}
Parallel.For(0, sourceline.Length, x =>
{
folder = ((int)(Array.IndexOf(sourceline, sourceline[x])/bs)).ToString();
//i call a function here to go retrieve my document
//findmydoc(objsto, sourceline[x]); <== this is how I call my function
}
Array.Clear(sourceline, 0, sourceline.Length);
sourceline = null;
}));
t1.IsBackground = true;
t1.Start();
程序並在整個文本文件中讀取並創建我希望看到(在這種情況下20,000)文件的正確量。如前所述,它與每個文件夾創建2,000個對象不一致,並且並不總是將這兩個文件放在同一個文件夾中。任何有識之士都非常感謝!謝謝大家。
我使用了「文件夾」中,我稱之爲(評論區)的函數變量給我的功能正在創建的位置文件文件夾(如果這是有道理的)。 – Jayarikahs 2014-09-19 21:01:14
當我在Parallel.For中創建變量「string folder」時,我得到一個「名稱文件夾在當前上下文中不存在」,因爲我使用自定義函數內的「文件夾」變量來引用該位置。這就是爲什麼我在頂部聲明「私人字符串文件夾」的原因。 – Jayarikahs 2014-09-19 21:18:19
您可以將自定義函數更改爲接受該文件夾作爲參數,而不是使用共享變量。 – 2014-09-19 21:21:25