我有一个不使用代码
终止的控制台应用程序new System.Threading.AutoResetEvent(false).WaitOne();
我想要实现的目标:我希望运行StopWatch
,如果符合条件,它将运行某些文件操作代码。最后在代码块之后,重置计时器并等待它再次true
重新运行。
问题:然而,在调试时,我无法让我的代码完成我的条件,即使它已经通过了所需的条件。
我的代码:
static void Main(string[] args)
{
string mutex_id = "41585f436f766572743243494d";
using (System.Threading.Mutex mtx = new System.Threading.Mutex(false, mutex_id))
{
if(!mtx.WaitOne(0,false))
{
return;
}
processTimer = new Stopwatch();
processTimer.Start();
if (processTimer.Elapsed.Seconds > 10)
{
processTimer.Stop();
fileQueue = Directory.GetFiles(ConfigurationManager.AppSettings["WatchPath"], ConfigurationManager.AppSettings["Format"]).ToList();
}
//process the fileQueue
//..
//..
//processTimer.Reset(); -> Reset Timer to wait for another 10 sec and process again
new System.Threading.AutoResetEvent(false).WaitOne();
}
}
之前我使用过FileSystemWatcher
但是我没能正确地获得进程(比如连续/并发文件创建等)。尝试Threading
和Timers
作为我的question。
现在我正试图从新的角度来解决这个问题。希望有人能用这启发我。
答案 0 :(得分:2)
没有"再试一次"在你的代码中。
您编写的代码执行以下操作:
你需要一些循环来定期检查是否已经过了10秒,否则Sleep