System.Threading.CancellationToken 使用 quartz.net 3.0 时未标记为可序列化

System.Threading.CancellationToken Not marked as serializable When using quartz.net 3.0

在使用quartz.net3.0新版本时遇到的问题:

System.Threading.CancellationToken Not marked as serializable

这是我的代码:

    var properties = new NameValueCollection();
    properties["quartz.scheduler.proxy"] = "true";
    properties["quartz.scheduler.proxy.address"] = "tcp://localhost:777/Scheduler";
    properties["quartz.serializer.type"] = "json";
    ISchedulerFactory schedulerFactory = new 
    StdSchedulerFactory(properties);
    var scheduler =await schedulerFactory.GetScheduler();
    await scheduler.GetJobGroupNames();

如代码运行,我可以得到对象scheduler,但是当执行GetJobGroupNames()函数时,我得到错误System.Threading.CancellationToken Not marked as serializable,所以我在github:

查看源码
public virtual Task<IReadOnlyCollection<string>> GetJobGroupNames(
    CancellationToken cancellationToken = default)
{
    return CallInGuard(x => x.GetJobGroupNames(cancellationToken));
}

我不知道为什么这个函数不能work.Maybe添加Serializable属性?但是我可以't.Has有没有人遇到和我一样的问题?

这是 3.0.0 中的 bug/flaw。 Async/await 由于远程处理基础设施的遗留要求而无法工作的远程接口也过于急切。

3.0.1 将通过从远程调用中删除 Tasks 和 CancellationTokens 来解决此问题。已跟踪问题 here