我有一个使用两个 BackgroundWorkers 的服务器应用程序:
1) 用于不断检查 SVN 存储库是否更新。
2) 用于管理进程队列。
BackgroundWorker revisionsWorker = new BackgroundWorker();
revisionsWorker.DoWork += (queueSender1, queueEvent1) => checkRevision();
revisionsWorker.RunWorkerAsync();
BackgroundWorker queueWorker = new BackgroundWorker();
queueWorker.DoWork += (queueSender2, queueEvent2) => manageComputersQueue();
queueWorker.RunWorkerAsync();
当 SVN 更新时,该函数会checkRevision()
更新本地存储库,运行一些脚本,并使用devenv.com
. queueWorker
检查服务器是否正忙于运行checkRevision()
. 如果它不忙,它会根据它们在队列中的位置运行进程。
我的问题是,如果 SVN 已更新,并且checkRevision()
正在运行(需要一些时间..),manageComputersQueue()
则在任何时候都不会访问,直到checkRevision()
完成。
意思是,我希望manageComputersQueue()
始终运行,如果服务器正忙于执行其他任务,它将通知客户端服务器当前正忙。
是否有可能当 1 个后台工作人员正在做一些事情时,其他后台工作人员正在等待它完成,即使他们都异步运行?