|
|
|
|
@ -2,6 +2,7 @@
|
|
|
|
|
using System.Reflection;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using Quartz;
|
|
|
|
|
using Volo.Abp.DynamicProxy;
|
|
|
|
|
using Volo.Abp.Threading;
|
|
|
|
|
|
|
|
|
|
namespace Volo.Abp.BackgroundWorkers.Quartz
|
|
|
|
|
@ -26,16 +27,16 @@ namespace Volo.Abp.BackgroundWorkers.Quartz
|
|
|
|
|
public void BuildWorker(IBackgroundWorker worker)
|
|
|
|
|
{
|
|
|
|
|
int? period;
|
|
|
|
|
var workerType = worker.GetType();
|
|
|
|
|
var workerType = ProxyHelper.GetUnProxiedType(worker);
|
|
|
|
|
|
|
|
|
|
if (worker is AsyncPeriodicBackgroundWorkerBase or PeriodicBackgroundWorkerBase)
|
|
|
|
|
{
|
|
|
|
|
if (typeof(TWorker) != worker.GetType())
|
|
|
|
|
if (typeof(TWorker) != workerType)
|
|
|
|
|
{
|
|
|
|
|
throw new ArgumentException($"{nameof(worker)} type is different from the generic type");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var timer = worker.GetType().GetProperty("Timer", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(worker);
|
|
|
|
|
var timer = workerType.GetProperty("Timer", BindingFlags.Instance | BindingFlags.NonPublic)?.GetValue(worker);
|
|
|
|
|
|
|
|
|
|
if (worker is AsyncPeriodicBackgroundWorkerBase)
|
|
|
|
|
{
|
|
|
|
|
|