C# 更新文件夹内容
我创建了一个应用程序,它可以获取文件夹的内容并在listview中列出它们,我想知道每“X”秒更新一次的最佳方法是什么 以前,我在GUI中有一个“刷新”按钮,但是我想离开它,自动刷新 我已经使用过,但是我知道C# 更新文件夹内容,c#,winforms,C#,Winforms,我创建了一个应用程序,它可以获取文件夹的内容并在listview中列出它们,我想知道每“X”秒更新一次的最佳方法是什么 以前,我在GUI中有一个“刷新”按钮,但是我想离开它,自动刷新 我已经使用过,但是我知道Sleep()将导致应用程序完全停止,直到计时器启动: public Form1() { InitializeComponent(); RefreshQueue(); label1.Text = listBox1.Items.Count.ToString();
Sleep()
将导致应用程序完全停止,直到计时器启动:
public Form1()
{
InitializeComponent();
RefreshQueue();
label1.Text = listBox1.Items.Count.ToString();
while (i > 1)
{
RefreshQueue();
System.Threading.Thread.Sleep(1000);
}
}
而且:
public void Update()
{
RefreshQueue();
}
RefreshQueue()
清除当前列表框并调用PrintQueue()
:
你能提供你已经尝试过的代码吗?也许可以使用定时器?还是文件系统监视者?为了获得更好的答案,您应该描述您已经实现了什么以及您在哪里遇到了困难。此外,所使用的技术(WinForms、WPF、ASP.NET等)也很重要。我尝试使用Update()方法,以及一个While(I=1)循环。我一直在尝试使用System.Threading.Thread.Sleep(1000)等待1秒。这是在使用表单时发生的。您看过吗?WinForms和在代码背后执行任何等待/异步代码的问题在于,它与UI在同一线程中执行。这意味着,如果要定期更新UI,必须使用一种方法在后台更新数据,然后向UI发送信号,要求它根据新检索的数据进行自我更新。在这种情况下,您需要一个在后台执行的计时器,它只告诉UI从.Net文件系统API更新文件夹内容。
public void PrintQueue()
{
DirectoryInfo di = new DirectoryInfo(directoryLocation);
foreach (FileInfo fi in di.GetFiles().OrderByDescending(d => d.LastWriteTime))
{
listBox1.Items.Add(directoryLocation + fi);
}
}