1. 自定义QuartZ的并发锁
 1     using System;  
 2     using System.Threading;  
 3     using log4net;  
 4     using Quartz;  
 5       
 6     namespace HK.Gramma.Business  
 7     {  
 8         public class FirstTimeJob : IJob  
 9         {  
10             /// <summary>  
11             ///     日志工具  
12             /// </summary>  
13             private static readonly ILog Logger = LogManager.GetLogger("FirstTimeJob");  
14       
15             /// <summary>  
16             ///     线程对象  
17             /// </summary>  
18             private static readonly object SyncObj = new object();  
19       
20             /// <summary>  
21             ///     任务运行标识  
22             /// </summary>  
23             private static bool _isRunning;  
24              
25             /// <summary>  
26             ///     线程访问计数  
27             /// </summary>  
28            private static int _visitCount = 0;  
29       
30             /// <summary>  
31             ///     执行定时任务  
32             /// </summary>  
33             /// <param name="context">上下文</param>  
34             public void Execute(IJobExecutionContext context)  
35             {  
36                 lock (SyncObj)  
37                 {  
38                     if (_isRunning)  
39                     {  
40                         return;  
41                     }  
42       
43                     _isRunning = true;  
44                 }  
45       
46                 try  
47                 {  
48                     Logger.InfoFormat("开始任务,线程ID={0}", Thread.CurrentThread.ManagedThreadId);  
49                       Thread.Sleep(5000);  
50                     _visitCount++;  
51                     Logger.InfoFormat("结束任务,线程ID={0},访问总数={1}", Thread.CurrentThread.ManagedThreadId, _visitCount);            }  
52                 catch (Exception ex)  
53                 {  
54                     Logger.ErrorFormat("任务异常\r\n{0}", ex);  
55                 }  
56                 finally  
57                 {  
58                     lock (SyncObj)  
59                     {  
60                         _isRunning = false;  
61                     }  
62                 }  
63             }  
64         }  
65     }  
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-05-25
  • 2022-12-23
  • 2022-12-23
  • 2022-03-01
  • 2021-07-10
猜你喜欢
  • 2022-12-23
  • 2021-05-16
  • 2022-12-23
  • 2022-12-23
  • 2021-12-06
  • 2022-01-11
相关资源
相似解决方案