/// <summary> /// Реализовал здесь, чтобы не тянуть зависимость от окон во ViewModel /// </summary> private void OkButton_Click(object sender, RoutedEventArgs e) { try { var authViewModel = DataContext as AuthWindowViewModel; var codebaseService = CommonContainer.Resolve <ICodebaseService>(authViewModel.CodebaseUrl); codebaseService.LogIn(authViewModel.Username, txtPassword.Password); AuthConfigHelper.LastCodebaseUrl = authViewModel.CodebaseUrl; AuthConfigHelper.LastUsername = authViewModel.Username; if (authViewModel.IsPasswordSaving) { AuthConfigHelper.SavedPassword = txtPassword.Password; } else { AuthConfigHelper.DeletePassword(); } } catch (Exception ex) { MessageBox.Show(ex.Message, this.Title); return; } new MainWindow().Show(); this.Close(); }
/// <summary> /// //Trigger触发后,job执行时调用本方法。true即否决,job后面不执行。 /// </summary> /// <param name="trigger"></param> /// <param name="context"></param> /// <returns></returns> public bool VetoJobExecution(ITrigger trigger, IJobExecutionContext context) { var taskHelper = CommonContainer.Resolve <ITaskHelper>(); taskHelper.UpdateRecentRunTime(trigger.JobKey.Name, TimeZoneInfo.ConvertTimeFromUtc(context.FireTimeUtc.Value.DateTime, TimeZoneInfo.Local)); return(false); }
/// <summary> /// 启用任务调度 /// 启动调度时会把任务表中状态为“执行中”的任务加入到任务调度队列中 /// </summary> public static void StartScheduler() { try { if (!_scheduler.IsStarted) { //添加全局监听 _scheduler.ListenerManager.AddTriggerListener(new CustomTriggerListener(), GroupMatcher <TriggerKey> .AnyGroup()); _scheduler.Start(); var taskHelper = CommonContainer.Resolve <ITaskHelper>(); //获取所有执行中的任务 List <TaskModel> listTask = taskHelper.GetAllTaskList()?.ToList <TaskModel>(); _currentTaskList = listTask; if (listTask != null && listTask.Count > 0) { foreach (TaskModel taskUtil in listTask) { try { ScheduleJob(taskUtil, true);//防止修改cron表达式 } catch (Exception e) { LogHelper.WriteLog($"任务“{taskUtil.TaskName}”启动失败!", e); } } } LogHelper.WriteLog("任务调度启动成功!"); } } catch (Exception ex) { LogHelper.WriteLog("任务调度启动失败!", ex); } }
private static void Register(ContainerBuilder builder) { builder.Register(context => new HttpClient() { BaseAddress = BaseAddress }); builder.Register(context => new WebLoggerFactory()).As <ILoggerFactory>(); CommonContainer.Register(builder); }
/// <summary> /// /// </summary> /// <returns></returns> public static IList <TaskModel> CurrentTaskList() { if (_currentTaskList == null) { var taskHelper = CommonContainer.Resolve <ITaskHelper>(); _currentTaskList = taskHelper.GetAllTaskList(); } return(_currentTaskList); }
public void ConfigureContainer(ContainerBuilder builder) { var assembly = Assembly.GetExecutingAssembly(); builder.RegisterAssemblyTypes(assembly); builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces(); builder.Register(context => LoggerFactory.Create(logBuilder => logBuilder.AddConsole())).As <ILoggerFactory>(); builder.RegisterType <Db>().As <IDb>().SingleInstance(); CommonContainer.Register(builder); }
public void Execute(IJobExecutionContext context) { try { var testService = CommonContainer.Resolve <ITestService>(); testService.TestPrintAsync(); // 3. 开始执行相关任务 LogHelper.WriteLog("当前系统时间:" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")); Thread.Sleep(1000); } catch (Exception ex) { LogHelper.WriteLog(context.Trigger.Description, ex); } }
public static void AutoFac() { var builder = new ContainerBuilder(); #region 序集注入 var assembly = new Assembly[] { Assembly.Load("Scheduler.Job.Repository"), Assembly.Load("Scheduler.Job.Service"), Assembly.Load("Scheduler.Job.TaskManager"), Assembly.Load("Infrustructure") }; builder.RegisterAssemblyTypes(assembly).AsImplementedInterfaces(); #endregion var container = builder.Build(); CommonContainer.RegisterContainer(container); }
public static IContainer _container; //可用于手工反转出一个对象 _container.Resolve<ParkLotManager>(); protected void Application_Start() { AreaRegistration.RegisterAllAreas(); GlobalConfiguration.Configure(WebApiConfig.Register); //api路由 FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters); //RouteConfig.RegisterRoutes(RouteTable.Routes); BundleConfig.RegisterBundles(BundleTable.Bundles); //设定api的返回格式 GlobalConfiguration.Configuration.Formatters.Insert(0, new JsonMediaTypeFormatter()); //去除掉xml格式支持 GlobalConfiguration.Configuration.Formatters.XmlFormatter.SupportedMediaTypes.Clear(); //去掉form表单格式支持 GlobalConfiguration.Configuration.Formatters.FormUrlEncodedFormatter.SupportedMediaTypes.Clear(); /*****************************************************************************************************************************/ //IOC容器绑定器 builder = new ContainerBuilder(); //注册下层公用对象到公共容器 CommonContainer.RegTools(builder); CommonContainer.RegSecurity(builder); CommonContainer.RegCommunication(builder); CommonContainer.RegContext(builder); CommonContainer.RegDataService(builder); CommonContainer.RegBusiness(builder); //注册本项目API接口 builder.RegisterApiControllers(Assembly.GetExecutingAssembly()).InstancePerRequest(); builder.RegisterWebApiFilterProvider(GlobalConfiguration.Configuration); builder.RegisterWebApiModelBinderProvider(); //创建容器 _container = builder.Build(); //注入 GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver(_container); DependencyResolver.SetResolver(new AutofacDependencyResolver(_container)); /*****************************************************************************************************************************/ }
public void MultipleContainersCanExist() { // Get the containers var containerA = CommonProvider.Container; var containerB = new CommonContainer(); // Register the same type for both containers with different implementations var t = typeof(TestClassBase); containerA.Register(t, typeof(TestClass)); containerB.Register(t, (Func<object[], object>)PrivateTestClass.CreateInstanceWithParams); // Build our instances var instanceA = containerA.Provide<TestClassBase>(35); var instanceB = containerB.Provide<TestClassBase>(1, 1); // Assert we have different strokes for different folks containerA.ShouldNotBeSameAs(containerB); instanceA.ShouldNotBeSameAs(instanceB); instanceA.ShouldNotBeNull("A was null"); instanceB.ShouldNotBeNull("B was null"); instanceA.ShouldBeOfType<TestClass>("A was not expected type"); instanceB.ShouldBeOfType<PrivateTestClass>("B was not expected type"); }
public void ContainersCanGetMappingsFromTheirParent() { // Get the containers var parent = CommonProvider.Container; var child = new CommonContainer(parent); // Register the same type for both containers with different implementations var t = typeof(TestClassBase); parent.Register(t, typeof(TestClass)); // Build our instances var instance = child.Provide<TestClassBase>(); // Check that the item was provided instance.ShouldNotBeNull(); }
/// <summary> /// Job完成时调用 /// </summary> /// <param name="trigger">触发器</param> /// <param name="context">上下文</param> /// <param name="triggerInstructionCode"></param> public void TriggerComplete(ITrigger trigger, IJobExecutionContext context, SchedulerInstruction triggerInstructionCode) { var taskHelper = CommonContainer.Resolve <ITaskHelper>(); taskHelper.UpdateNextFireTime(trigger.JobKey.Name, TimeZoneInfo.ConvertTimeFromUtc(context.NextFireTimeUtc.Value.DateTime, TimeZoneInfo.Local)); }