问题标签 [fluentscheduler]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
413 浏览

c# - C# Web App FluentScheduler Job 在 ThreadAbortException 之后不会重复

我是负责在 IIS 10.0 上运行的 C# Web 应用程序的开发人员,我使用 FluentScheduler 库来安排我的作业。

该作业执行数据库查询,然后生成一些文件。最近,我们的作业因运行时间过长而失败,并且 Windows 杀死了线程(这只发生在需要处理大量数据的特定日期)。

在对数据库访问进行了一些优化之后,我把线程杀死了一堆,但它仍然偶尔会发生。

问题是,在线程被杀死(并记录异常)之后,作业停止在预定时间运行。

即使确实发生了此异常,我如何确保作业继续运行?

我的代码如下:

第一次运行时有 10 分钟的延迟,因为我们在数据库中缓存了一些可用信息以提高应用程序的性能,而该作业使用来自该缓存的数据,我不知道如何使其仅在缓存完成后开始所以我添加了这个延迟。

在我的工作中捕获并记录的任何其他异常都不会导致此问题。只有当线程运行时间过长并且 Windows 将其杀死时,它才会再次停止运行。

编辑:添加应用程序失败的行(至少这是堆栈跟踪告诉我的。

整个工作非常广泛,我不能在这里发布。

如您所见,我将一次要处理的条目数降低到 100,但即使将其设置为 50 或较低的数字,我最终也会收到错误,因为 GenerateData 表非常大,即使它的条目在被删除后被删除处理。

Edit2:事实上,代码在类的任何随机部分都失败了。它运行了大约 10 分钟,然后它就崩溃了。我只是被搞砸了吗?

0 投票
1 回答
175 浏览

c# - 如何在应用程序的其他部分获取正确的 SignalR 集线器?

我正在使用SignalR v2.41旧版本,但我必须使用它,因为我也仅限于使用旧版本的 MVC。除此之外,我还使用FluentScheduler定期向客户发送有针对性的消息。

问题是,我在集线器中保留了用户连接字典:

现在在 FluentScheduler 代码中,我需要获取连接列表的集线器,这样我就知道要发送什么到哪个连接:

问题是,hub我使用的实例var hub = new DefaultHubManager(GlobalHost.DependencyResolver).ResolveHub("MyHub") as MyHub;与客户端连接的实例不同,因为这个实例从来没有任何连接。

如何获得正确的集线器实例?

0 投票
0 回答
55 浏览

c# - Weeks() 在 FluentScheduler 中没有按预期工作

我正在设置每周一上午 10 点运行的工作:

然而,他显然是第一次跑,不再跑了。

我是否正确地进行了作业设置,或者此功能是否存在问题?你能帮助我吗?