【发布时间】:2010-12-16 15:30:50
【问题描述】:
我已经尝试了几个教程来解决我的问题...但它是如此的大和 phat 一个 -.-
代码如下:
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();
}
是的,我实际上是在使用这种方法:How to start thread if button pressed and stop it if pressed again?
这就是为什么我的代码是这样的。
首先:
我的 lil 程序的目的是允许用户在文本框中输入路径,单击监控按钮和 BINGO,线程启动并继续监控指定文件夹中确定的文件(在本例中为 txt),并将它们添加到数据网格中。
实际上它已经在我的数据网格中列出..问题是:当单击监视器按钮时,线程只启动一次:(而且我想要每 3 秒 BAAZINGA 新文件之类的东西!!(如果添加到文件夹)
正如你们所见,我很菜鸟,而且我在所有这些线程和调用、跨线程问题等方面都遇到了问题……你知道的!
我不是要一个有效的代码,只是建议和技巧让它成为一件很酷的事情
编辑 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() 的 Execute 方法
DirectoryManager -> 这是我宝贵的课程,有一个Execute(string path),它调用ReadFiles(path) 和GetFiles(path)..
GetFiles 是一个字符串列表,返回_files(string list),由ReadFiles() 填充。
编辑 3:
eww,我得到它刷新数据网格视图,但它使用 windows.forms.timer..
没有计时器有什么想法吗?
OBS:对不起我糟糕的英语和像菜鸟一样的表演 LOL
【问题讨论】:
标签: c# multithreading visual-studio-2010