我需要一个方法来经常运行一些数据库处理.但是,我可能需要它可以由网站上的管理员触发.但我不希望这种方法同时运行多次,因为这可能会导致它遇到数据库的问题.
例如,我可以......
创建一个在计时器上运行该方法的单例类,并在global.asax文件中对其进行实例化.然后,因为它是一个单例,我可以从我的普通.aspx页面调用它,并随时调用该方法.我可能需要使用C#的"锁定"功能来检查方法是否已经运行.
我最近听到一些谈话,单身人士是"邪恶的",但这似乎是完美的契合.你怎么看?提前致谢.
定时器和锁(用于同步对数据库的访问)在Web上是一个坏主意; 您可能在不同的服务器上有零个,一个或多个应用程序池.它们可以随时回收,并且在需要之前不会旋转.基本上,这不会阻止您从多个来源锤击数据库.
就个人而言,我很想写一个服务来完成这项工作(db-polling,或通过WCF等),或者使用db(一个SP或类似的) - 在表格行中设置一个标志来说"正在进行中",在数据库中执行工作,并清除标志(重复尝试在进行中立即退出).