Bom dia amigo!
Escrevi um código para tentar solucionar o seu problema. Fiz apenas como teste, funcionou direitinho aqui mas falta colocar algumas consistências ao acessar o diretório e tentar renomear os arquivos, OK? Aí você complementa a lógica depois. Mas é basicamente
isto:
Imports System.Threading
Module Module1
Dim arquivoRandomico As String
Dim arquivoOriginal As String
Dim diretorio As String
Dim listaArqs() As String
Sub Main()
' Recupera a lista dos arquivos do diretório
diretorio = "c:\temp\"
listaArqs = IO.Directory.GetFiles(diretorio)
' Exibe os arquivos
Console.WriteLine("Lista de arquivos: ")
For Each file As String In listaArqs
Console.WriteLine(file)
Next
' Inicializa uma Thread/Loop para efetuar o processamento sem bloquear o programa
Dim t = New Thread(AddressOf RenomearArqRand)
t.IsBackground = True
t.Start()
Console.ReadKey()
End Sub
Private Function RenomearArqRand()
' Obtêm a quantidade de arquivos e randomiza um índice baseado na quantidade de arquivos
Dim qtdArqs As Integer = listaArqs.Count()
Dim indiceRand As Integer
Do
indiceRand = IndiceRandomico(1, qtdArqs)
arquivoRandomico = listaArqs(indiceRand - 1).ToString()
arquivoOriginal = arquivoRandomico
Console.WriteLine("Arquivo Randomico: " + arquivoRandomico)
' Renomeia o arquivo para o nome desejado 'aa1'
IO.File.Move(arquivoRandomico, diretorio + "aa1")
' Aguarda 30 segundos
Thread.Sleep(30000)
' Renomeia o arquivo para o nome original e randomiza outro arquivo
IO.File.Move(diretorio + "aa1", arquivoOriginal)
' Aguarda um tempo para copiar o arquivo
Thread.Sleep(2000)
Loop
End Function
' Randomiza um número dado um intervalo mínimo e máximo
Private Function IndiceRandomico(ByVal min As Integer, ByVal max As Integer) As Integer
' Inicializa o RandomGenerator
Dim RandGen As System.Random = New System.Random()
' Retorna o número randômico do intervalo. Obs.: Adicionar +1 ao valor máximo, caso queira que ele entre na contagem . Ex.: 1 a 10. Enviar 1 a 11
Return RandGen.Next(min, max + 1)
End Function
End Module
Espero ter ajudado! Abraço!