/// <summary> /// 任务进度加入线程池 /// </summary> public static void Start(ProgressiveJob progressiveJob, Object args) { if (progressiveJob == null) { return; } //if (progressiveJob.Unique == Unique.Global) //{ // if (_progressiveJobs.Any(job => job.GetType() == progressiveJob.GetType())) // { // throw new Exception("已有一个同一类型的全局任务正在执行。"); // } //} //if (progressiveJob.Unique == Unique.Session) //{ // if (_progressiveJobs.Any(job => job.GetType() == progressiveJob.GetType() && job.SessionId.Equals(progressiveJob.SessionId))) // { // throw new Exception("你已有一个同一类型的任务正在执行。"); // } //} if (!_progressiveJobs.Contains(progressiveJob)) { _progressiveJobs.Add(progressiveJob); } //var sessionThreadStarter = new SessionThreadStarter(progressiveJob.Execute) { SessionId = progressiveJob.SessionId }; var thread = new Thread(progressiveJob.Execute); thread.IsBackground = true; thread.Start(args); }
/// <summary> /// 通知客户端,服务端发生异常 /// </summary> /// <param name="userLoginName"></param> /// <param name="progressiveJob"></param> /// <param name="msg"></param> /// <param name="stackTrace"></param> public static void Exception(string userLoginName, ProgressiveJob progressiveJob, String msg, String stackTrace) { if (_loginNameConnId.ContainsKey(userLoginName)) { var hubContext = GlobalHost.ConnectionManager.GetHubContext <ProgressiveJobHub>(); hubContext.Clients.Client(_loginNameConnId[userLoginName]).onException(progressiveJob, msg, stackTrace); } }
/// <summary> /// 通知客户端任务完成 /// </summary> /// <param name="userLoginName"></param> /// <param name="progressiveJob"></param> public static void Finish(string userLoginName, ProgressiveJob progressiveJob) { if (_loginNameConnId.ContainsKey(userLoginName)) { var hubContext = GlobalHost.ConnectionManager.GetHubContext <ProgressiveJobHub>(); hubContext.Clients.Client(_loginNameConnId[userLoginName]).finish(progressiveJob); } }
public static void Remove(ProgressiveJob progressiveJob) { _progressiveJobs.Remove(progressiveJob); }