我有一个控制台应用程序,它将由设置 Windows 任务调度程序的不同批处理文件启动。我想对这些命令进行排队,或者在我的应用程序中使用某种锁定机制,让所有命令在队列中等待,以便一次只运行一个命令。我正在考虑做某种文件锁定,但我无法理解它如何用于排队命令。我只需要某种方向。
问问题
238 次
2 回答
3
对于进程间同步,您可以使用Mutex
表示命名系统互斥锁的实例。
// Generate your own random GUID for the mutex name.
string mutexName = "afa7ab33-3817-48a4-aecb-005d9db945d4";
using (Mutex m = new Mutex(false, mutexName))
{
// Block until the mutex is acquired.
// Only a single thread/process may acquire the mutex at any time.
m.WaitOne();
try
{
// Perform processing here.
}
finally
{
// Release the mutex so that other threads/processes may proceed.
m.ReleaseMutex();
}
}
于 2012-05-20T17:19:12.577 回答
0
寻找Semaphore
对象。
_resultLock = new Semaphore(1, 1, "GlobalSemaphoreName");
if (!_resultLock.WaitOne(1000, false))
{
// timeout expired
}
else
{
// lock is acquired, you can do your stuff
}
您始终可以将超时设置为 Infinite,但不时控制程序流并能够优雅地中止是很实际的。
于 2012-05-20T17:14:08.843 回答