我写了以下代码。在那里,我创建了两个线程 ItmTh 和 RelTh。ItmTh 线程应该首先执行,当 ItmTh 线程执行完毕时,应该执行 RelTh 线程。有什么可能的解决方案?
`
string[] filePaths = Directory.GetFiles(folderPath, "ARAS_IT*");
bool isTemplateFile = true;
int arasDefinitionFileCount = filePaths.Length;
TotalTemplateFile = arasDefinitionFileCount + Directory.GetFiles(folderPath, "ARAS_Rel*").Length;
//progressBar1.Value=0;
//int progess = 0;
if (arasDefinitionFileCount < 1)
{
isTemplateFile = false;
//MessageBox.Show("Root Folder does not contain Template File");
//return;
}
ManualResetEvent syncEvent = new ManualResetEvent(false);
Thread ItmTh = new Thread(()=>
{
//Iterate over Item Type files in Root Folder
for (int i = 0; i < arasDefinitionFileCount; i++)
{
//progess++;
//UpdateProgress(Convert.ToInt32(Convert.ToDouble((progess * 100) / progressBarValue)));
string fileName = filePaths[i];
//Find Name of Item Type From File Name
string ItemType = Path.GetFileNameWithoutExtension(fileName);
int start = ItemType.LastIndexOf('-');
int end = ItemType.Length;
start++;
end = end - start;
ItemType = ItemType.Substring(start, end);
//UpdateProgress(0);
if (ItemType.Equals("Document", StringComparison.InvariantCultureIgnoreCase))
{
Thread th = new Thread(() =>
{
processDocumentDataDefinitionFile(fileName, folderPath + "\\ARAS_IT-" + ItemType + "-files\\");
});
th.Start();
//th.Join();
}
else
{
Thread th = new Thread(() =>
{
processDataDefinitionFile(fileName, tbRootFolderPath.Text, ItemType, folderPath + "\\ARAS_IT-" + ItemType + "-files\\");
});
th.Start();
//Wait for Previous thread To complete its task
//th.Join();
}
}
});
ItmTh.Start();
/*******************************************************************************************************************/
//Process Relationship files
//ItmTh.Join();
Thread RelTh = new Thread(()=>
{
syncEvent.WaitOne();
filePaths = null;
filePaths = Directory.GetFiles(folderPath, "ARAS_Rel*");
arasDefinitionFileCount = filePaths.Length;
if (arasDefinitionFileCount < 1 && isTemplateFile == false)
{
MessageBox.Show("Root Folder does not contain Template File");
return;
}
//Iterate over Relationships files in Root Folder
for (int i = 0; i < arasDefinitionFileCount; i++)
{
string fileName = filePaths[i];
//Find Name of Item Type From File Name
string ItemType = Path.GetFileNameWithoutExtension(fileName);
int start = ItemType.LastIndexOf('-');
int end = ItemType.Length;
start++;
end = end - start;
ItemType = ItemType.Substring(start, end);
//Process File
Thread th = new Thread(() =>
{
Cursor.Current = Cursors.WaitCursor;
processDataDefinitionFile(fileName, tbRootFolderPath.Text, ItemType, folderPath + "\\ARAS_IT-" + ItemType + "-files\\");
});
th.Start();
//Wait for Previous thread To complete its task
// th.Join();
}
});
RelTh.Start();`