У меня есть консольное приложение, которое не оканчивается с помощью кодаВедения консольного приложения от закрытия, но все еще работают коды
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.
Теперь я пытаюсь подойти к этому вопросу с новой точки зрения. Надеюсь, некоторые могут просветить меня этим.
Почему вы с помощью [ 'StopWatch'] (https://msdn.microsoft.com/en-us/library/ system.diagnostics.stopwatch (v = vs.110) .aspx), а не, скажем, ['Таймер'] (https://msdn.microsoft.com/en-us/library/system.threading.timer (v = vs.110) .aspx)? –