백그라운드 폼이 계속 이동하여 '고정'되지 않도록이 함수 아래에 스레드를 연결하려고합니다. 아무도이 작업을 수행하는 데 도움이 될 수 있습니까?# 재귀 디렉터리 검색을 어떻게 스레드합니까?
public IEnumerable<string> GetFiles(string path)
{
Queue<string> queue = new Queue<string>();
queue.Enqueue(path);
while (queue.Count > 0)
{
path = queue.Dequeue();
try
{
foreach (string subDir in Directory.GetDirectories(path))
{
queue.Enqueue(subDir);
}
}
catch (Exception ex)
{
richTextBox1.AppendText(ex.Message);
}
string[] files = null;
try
{
files = Directory.GetFiles(path);
}
catch (Exception ex)
{
richTextBox1.AppendText(ex.Message);
}
if (files != null)
{
for (int i = 0; i < files.Length; i++)
{
yield return files[i];
}
}
}
}
나는 다음과 같은 버튼을 사용하여 코드를 실행합니다
private void button1_Click(object sender, EventArgs e)
{
int count = 0;
FolderBrowserDialog dialog = new FolderBrowserDialog();
dialog.ShowDialog();
string selected = dialog.SelectedPath;
foreach (string file in GetFiles(selected))
{
count++;
richTextBox1.AppendText(file + Environment.NewLine);
}
label2.Text = count.ToString();
}
이 winforms 또는 wpf입니까? – SliverNinja
이것은 winforms입니다. – Clu
@SliverNinja : WPF는 언제 표준 'EventHandler'를 사용 했습니까? ;) –