/// <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);
        }
Example #3
0
 /// <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);
     }
 }
Example #4
0
 private static void Register(ContainerBuilder builder)
 {
     builder.Register(context => new HttpClient()
     {
         BaseAddress = BaseAddress
     });
     builder.Register(context => new WebLoggerFactory()).As <ILoggerFactory>();
     CommonContainer.Register(builder);
 }
Example #5
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        public static IList <TaskModel> CurrentTaskList()
        {
            if (_currentTaskList == null)
            {
                var taskHelper = CommonContainer.Resolve <ITaskHelper>();
                _currentTaskList = taskHelper.GetAllTaskList();
            }

            return(_currentTaskList);
        }
Example #6
0
        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);
        }
Example #7
0
 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);
     }
 }
Example #8
0
        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);
        }
Example #9
0
        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));
            /*****************************************************************************************************************************/
        }
Example #10
0
        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");
        }
Example #11
0
        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));
        }