C# 需要使用线程监视指定文件夹中的txt文件的帮助吗

C# 需要使用线程监视指定文件夹中的txt文件的帮助吗,c#,multithreading,visual-studio-2010,C#,Multithreading,Visual Studio 2010,我尝试了一些教程来解决我的问题。。。但这是一个非常有趣的故事- 代码如下: private void btnMonitor_Click(object sender, EventArgs e) { lock (m_lock) { if (thread_isRunning) { thread_isAbortRequested = true; }

我尝试了一些教程来解决我的问题。。。但这是一个非常有趣的故事-

代码如下:

private void btnMonitor_Click(object sender, EventArgs e)
    {
        lock (m_lock)
        {
            if (thread_isRunning)
            {
                thread_isAbortRequested = true;
            }
            else
            {
                thread_isAbortRequested = false;
                thread_isRunning = true;
                ThreadPool.QueueUserWorkItem(BackgroundMethod);
            }
        }
        //StartMonitoring();
    }
是的,我实际上遵循这个方法:

这就是为什么我的代码是这样的

首先:

我的lil程序的目的是允许用户在文本框中输入一个路径,单击monitor按钮和BINGO,启动线程并持续监视指定文件夹中已确定的文件(本例中为txt),并将其添加到datagrid

实际上,它已经列在我的数据网格中。。问题是:当点击监视器按钮时,线程只会启动一次:(我想要的是像BAAZINGA一样每隔3秒更新一次文件!!(如果添加到ofc文件夹中)

正如你们所看到的,我是一个非常愚蠢的人,我在所有这些线程和调用、交叉线程等方面都有问题……你们知道

我不是在要求一个有效的代码,只是建议和技巧,使它成为一件很酷的事情

编辑1:

目前,唯一出错的行是:ThreadPool.QueueUserWorkItem(BackgroundMethod)

错误列表显示: 错误1“System.Threading.ThreadPool.QueueUserWorkItem(System.Threading.WaitCallback)”的最佳重载方法匹配具有一些无效参数

错误2参数1:无法从“方法组”转换为“System.Threading.WaitCallback”

编辑2:

该程序有3个主要类(不是void main LOL),它们是:

Form.cs->在我设置按钮事件的地方,调用我的特殊方法

ViewerManager->实际上,我不确定这一点……我添加了构造函数和一个从DirectoryManager类调用GetFiles()的执行方法

DirectoryManager->这是我宝贵的类,有一个Execute(字符串路径),它调用ReadFiles(路径)和GetFiles(路径)

GetFiles是一个字符串列表,返回由ReadFiles()填充的_文件(字符串列表)

编辑3:

哦,我得到它刷新datagrid视图,但它使用的是windows.forms.timer

我知道没有定时器吗


OBS:对不起,我的英语太糟糕了,还有像noob一样的演技,哈哈,用一个?

怎么样?正如你所发现的,一个后台线程只执行一次。你真的需要使用
文件系统监视程序或某种计时器


您的最佳选择(如果您不想使用FileSystemWatcher)是使用
分派器
BackgroundWorker
中的循环-对于您正在做的事情,我强烈推荐分派器,因为它在UI线程上处理,这意味着您可以安全地更新数据网格,而不会出现任何线程问题。

是的,我以前已经使用过它……但这里的主要内容是:获取线程的基础知识!嘿,我已经使用过system.windows.timer,它运行得很好,使用这些计时器(线程中的计时器)是一件非常痛苦的事情…我猜这是目前的最终解决方案..先生,你告诉我dispastcher有道理..!哦,等等->ThreadPool.QueueUserWorkItem(BackgroundMethod);该行仍有问题,必须对其进行评论……如果这是线程的最终计时器解决方案呢