它可能不是你要找的,但我用Quartz.Net使用了SignalR,它工作的很好。
我已經在我的repository中發佈了一個簡單的應用程序。
您必須創建一個自定義Hub,您將用它來與ASP.NET頁面進行交互。
您的(quartz.net)作業將以相同的方式通過您的Hub與您的ASP.NET頁面進行交互。
一旦你已經安裝ASP.NET SignalR:
Install-Package Microsoft.AspNet.SignalR
您可以創建一個啓動類配置SignalR:
[assembly: OwinStartup(typeof(AspNetQuartSignalR.Startup))]
namespace AspNetQuartSignalR
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.MapSignalR();
}
}
}
你必須引用幾個腳本在你的頁面:
- jquery-2.1.1.js
- jquery.signalR-2.1.1.js
,並自動生成/signalr /集線器
現在你可以創建自己的Hub:
public class QuartzHub : Hub
{
...
}
與意志方法允許您與ASP.NET頁面中的腳本進行交互。
比方說,你中心有,讓你所有的quartz.net的狀態的方法CheckQuartzStatus
觸發配置:
public void CheckQuartzStatus()
{
string message = string.Empty;
var allTriggerKeys = Global.Scheduler.GetTriggerKeys(GroupMatcher<TriggerKey>.AnyGroup());
foreach (var triggerKey in allTriggerKeys)
{
ITrigger trigger = Global.Scheduler.GetTrigger(triggerKey);
message += string.Format("{0} = {1}", trigger.Key, Global.Scheduler.GetTriggerState(trigger.Key)) + Environment.NewLine;
}
Clients.All.onCheckQuartzStatus(message);
}
你的jQuery腳本可以在一個非常簡單的方式用這種方法進行交互:
quartz.server.checkQuartzStatus();
正如你可以看到在某些時候你中心方法會激發一個動作: onCheckQuartzStatus。
那就是在你的JavaScript 在頁面定義定義的事件的電話:
quartz.client.onCheckQuartzStatus = function (message) {
alert(message);
};
你可以看到如何交互工作在Default.aspx頁面看劇本。
您可以閱讀更多更多here。