我的应用程序从另一个系统接收消息,以指示文件已发布在文件夹中,然后检查文件夹以将该文件复制到另一个位置。这可以很好地工作,但是该文件在应用程序收到消息后20分钟发布在文件夹中。我想了解如何在不停止每个文件的投票的情况下创建延迟的帮助/想法。
eg:
- 上午10:00:收到的消息是20180405_file1.pdf创建
- 上午10:02:收到的消息收到20180405_file2.pdf创建
- 上午10:20:检查20180405_file1.pdf 的文件夹
- 10:22 AM:检查20180405_ File2.pdf 的文件夹
我尝试使用System.Thread.Timer
和Timespan
,但是我不希望该应用等到读取第一个文件,然后处理第二个文件。我希望它可以不断处理其他消息并读取文件
任何帮助都很好
msdn:
fileSystemwatcher聆听文件系统更改通知和 当目录或目录中的文件更改时,提出事件。
检查MSDN以获取更多详细信息。
您需要的东西:
FileSystemWatcher fileWatcher;
private void watch()
{
fileWatcher = new FileSystemWatcher();
fileWatcher.Path = path;
fileWatcher.Created += new FileSystemEventHandler(OnCreated);
fileWatcher.EnableRaisingEvents = true;
}
private void OnCreated(object source, FileSystemEventArgs e)
{
WaitForFile(e.FullPath);
//Copy files to another directory.
}
private void WaitForFile(string fullPath)
{
while (true)
{
try
{
using (StreamReader stream = new StreamReader(fullPath))
{
break;
}
}
catch
{
Thread.Sleep(1000);
}
}
}
OnCreated
创建我的文件后将击中,但要等到编写。无需任何计时器,因为FileSystemWatcher
将监视新的文件创建。
您只能使用它,在收到消息后,所有PDF文件都会生成的特定文件夹。如果它也是其他文件的通用文件夹,则需要管理来自消息通知的PDF文件名称的列表,然后根据OnCreated
中的条件复制它们。