From acb69ec6df90a0436fb7df0d3be7685704f033af Mon Sep 17 00:00:00 2001 From: liangshiwei Date: Sat, 27 Jun 2020 12:14:51 +0800 Subject: [PATCH] Optimize --- .../Quartz/QuartzBackgroundWorkerAdapter.cs | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerAdapter.cs b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerAdapter.cs index 02caffa80c..96cf3988bd 100644 --- a/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerAdapter.cs +++ b/framework/src/Volo.Abp.BackgroundWorkers.Quartz/Volo/Abp/BackgroundWorkers/Quartz/QuartzBackgroundWorkerAdapter.cs @@ -10,9 +10,16 @@ namespace Volo.Abp.BackgroundWorkers.Quartz IQuartzBackgroundWorkerAdapter where TWorker : IBackgroundWorker { + private readonly MethodInfo _doWorkAsyncMethod; + private readonly MethodInfo _doWorkMethod; + public QuartzPeriodicBackgroundWorkerAdapter() { AutoRegister = false; + + _doWorkAsyncMethod = typeof(TWorker).GetMethod("DoWorkAsync", BindingFlags.Instance | BindingFlags.NonPublic); + _doWorkMethod = typeof(TWorker).GetMethod("DoWork", BindingFlags.Instance | BindingFlags.NonPublic); + } public void BuildWorker(IBackgroundWorker worker) @@ -59,24 +66,18 @@ namespace Volo.Abp.BackgroundWorkers.Quartz { case AsyncPeriodicBackgroundWorkerBase asyncWorker: { - var doWorkAsyncMethod = asyncWorker.GetType() - .GetMethod("DoWorkAsync", BindingFlags.Instance | BindingFlags.NonPublic); - - if (doWorkAsyncMethod != null) + if (_doWorkAsyncMethod != null) { - await (Task) doWorkAsyncMethod.Invoke(asyncWorker, new object[] {workerContext}); + await (Task) _doWorkAsyncMethod.Invoke(asyncWorker, new object[] {workerContext}); } break; } case PeriodicBackgroundWorkerBase syncWorker: { - var doWorkMethod = syncWorker.GetType() - .GetMethod("DoWork", BindingFlags.Instance | BindingFlags.NonPublic); - - if (doWorkMethod != null) + if (_doWorkMethod != null) { - doWorkMethod.Invoke(syncWorker, new object[] {workerContext}); + _doWorkMethod.Invoke(syncWorker, new object[] {workerContext}); } break;