2011-12-28 3 views
2

У меня не слишком сложная проблема, которую я не знаю, как решить в VB.NET 2010расширение стека в приложении

В настоящее время у меня есть рекурсивная процедура для поиска файлов и/или поиска. С рекурсивной рутиной я никогда не завершаю вызов до конца и роста процесса достаточно значителен, чтобы радикально замедлить процесс с помощью теперь большого стека.

Чтобы сделать маты хуже, я использую процедуры предварительного кодирования, которые будут принимать подстановочные знаки. Каковы они:

Public Declare Function FindFirstFile Lib "kernel32" Alias "FindFirstFileA" (ByVal lpFileName As String, ByRef lpFindFileData As WIN32_FIND_DATA) As Integer 
Public Declare Function FindNextFile Lib "kernel32" Alias "FindNextFileA" (ByVal hFindFile As Integer, ByRef lpFindFileData As WIN32_FIND_DATA) As Integer 
Public Declare Function GetFileAttributes Lib "kernel32" Alias "GetFileAttributesA" (ByVal lpFileName As String) As Integer 
Public Declare Function FindClose Lib "kernel32" (ByVal hFindFile As Integer) As Integer 
Public Declare Function LockWindowUpdate Lib "user32" Alias "LockWindowUpdate" (ByVal hwndLock As Long) As Long 

Как это сделать? Они не поддаются нерекурсивной среде.

+0

Для начала, те P/Invoke определения неверны. Похоже, вы получили их из старого проекта VB 6. VB 6 не совместим с VB.NET; определения должны быть написаны по-разному. За информацией посетите www.pinvoke.net. Не используйте также A-суффиксные версии. В течение нескольких лет Windows была полностью Unicode. –

ответ

1

.NET 4.0 теперь содержит функции Перечислить файлы в одном вызове метода (Directory.EnumerateFiles метод):

Возвращает перечислимую коллекцию имен файлов, которые соответствуют шаблону поиска в указанном пути, и, возможно, поиск подкаталоги. версия

List<string> files = Directory.EnumerateFiles(startFolder, "*.txt", 
               SearchOption.AllDirectories).ToList(); 

VB.NET:

Dim files As List(Of String) = Directory.EnumerateFiles(startFolder, "*.txt", SearchOption.AllDirectories).ToList() 
+0

Ничего себе !!!! Спасибо!!!! – reneeculver

Смежные вопросы