我需要检查一个文件夹中是否有某些类型的文件,然后将它们添加到一个数组中,然后一个一个打印和删除它们。如果在此过程中添加了新文件,它只会被添加到打印队列中。我正在尝试监视是否每 1 秒创建一个文件。为此,我使用了带计时器的 FileSystemWatcher。我正在尝试将 2 个事件函数绑定在一起,但尝试时出现奇怪的错误。我在表单应用程序中执行此操作,今天我第一次看到这两个名称空间,我对多线程、后台线程或 System.Threading.Timer 和 System.Windows.Forms.Timer 之间的区别一无所知最适合这种特殊情况,所以如果问题在这些主题上过于具体,我可能也需要对此进行一些快速澄清。
基本上代码就是这个(它是一个更大程序的一部分,所以我会尝试只粘贴与问题相关的代码,另外,不要介意作为整个项目一部分的额外 using 命名空间。最后我不知道如何在此处的代码块中突出显示 C# 语法,使用 ctrl+K 的格式化工具构成了您在下一个代码块中阅读的内容。我尝试将其缩进一点以便更好地阅读。):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Collections;
using System.IO.Ports;
using System.Diagnostics;
private Timer timer1; //Windows.Form Timer
private void button1_Click(object sender, EventArgs e) {
try {
InitTimer();
FileSystemWatcher SysWatch = new FileSystemWatcher(FilesPath, "*.*");
SysWatch.Created += new FileSystemEventHandler(SysWatch_Created);
SysWatch.EnableRaisingEvents = true;
}
catch (Exception exc) {
MessageBox.Show(exc.Message);
}
}
private void InitTimer() {
timer1 = new Timer();
timer1.Tick+=new EventHandler(timer1_Tick);
timer1.Interval = 2000;
timer1.Start();
}
private void timer1_tick (object sender, EventArgs xz) {
void SysWatch_Created(object Sender, FileSystemEventArgs w) {
MessageBox.Show("File " + w.FullPath + "Creato");
}
}
我试图做的是尝试将文件创建事件控制器嵌套在计时器内,以便它检查文件创建,但我这样做的方式可能有问题。
我得到了这种东西(就在我尝试将 SysWatch_Created 嵌套到 timer1_Tick 中时,直到那时一切都很完美)。
我认为这与我试图用 Event Args 或其他东西嵌套 2 个方法的事实有关......不知道
欢迎任何关于如何做得更好的例子。
谢谢大家。