コード例 #1
0
        /// <summary>
        ///     Creates a new cron builder instance with options.
        /// </summary>
        /// <param name="options">The builder options</param>
        public CronBuilder(CronBuilderOptions options)
        {
            Options = options ?? throw new ArgumentNullException(nameof(options));

            DayOfMonth = new DayOfMonthTab(this);
            DayOfWeek  = new DayOfWeekTab(this);
            Hours      = new HoursTab(this);
            Minutes    = new MinutesTab(this);
            Month      = new MonthTab(this);
            Seconds    = new SecondsTab(this);
            Year       = new YearTab(this);
        }
コード例 #2
0
ファイル: ExtensionProxy.cs プロジェクト: hxx960701/Fishery
 public void SetEnvironment(ExtensionManager extensionManager, EventRouter eventRouter, CronTab cronTab, BaseStorage storage, string rootPath)
 {
     ExtensionManager.GetInstance(extensionManager);
     EventRouter.GetInstance(eventRouter);
     //AppDomain.MonitoringIsEnabled = true;
     AppDomain.CurrentDomain.AssemblyResolve += _currentAppDomain_AssemblyResolve;
     _loadedAssemblyList = new Dictionary <string, Assembly>();
     _extensionList      = new Dictionary <string, IExtension>();
     _metaAssemblyList   = new Dictionary <string, Assembly>();
     IOManager.SetDefaultDataStorage(storage);
     IOManager.SetRootPath(rootPath);
     CronTab.GetInstance(cronTab);
 }
コード例 #3
0
        private void CmdOpen_Click(object sender, System.EventArgs e)
        {
            if (DlgOpen.ShowDialog() != DialogResult.OK)
            {
                return;
            }

            using (var fs = new FileStream(DlgOpen.FileName, FileMode.Open))
            {
                var reader = XmlReader.Create(fs);
                CronTab.ReadXml(reader);
            }
        }
コード例 #4
0
ファイル: ExtensionManager.cs プロジェクト: hxx960701/Fishery
        public void LoadExtension(string fileName, bool autoInitialize = false)
        {
            if (!File.Exists(fileName))
            {
                return;
            }

            string assemblyName = Path.GetFileName(fileName);

            if (!_isUseSeparateAppdomain && Array.Find(AppDomain.CurrentDomain.GetAssemblies(),
                                                       assembly => assembly.GetName().Name == Path.GetFileNameWithoutExtension(fileName)) != null)
            {
                Console.WriteLine(
                    $"[Warning - {DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")}/ExtensionManager]:An existing extension has been loaded in default appdomain.");
                return;
            }

            ExtensionDomain existExtensionDomain = _extensionDomainList.Find(ed => ed.AssemblyName == assemblyName);

            if (existExtensionDomain != null && _isUseSeparateAppdomain)
            {
                existExtensionDomain.Proxy.Uninitialize();
                _extensionDomainList.Remove(existExtensionDomain);
            }

            ExtensionProxy proxy;
            AppDomain      ownerDomain;

            if (_isUseSeparateAppdomain)
            {
                Evidence       evidence       = new Evidence();
                AppDomainSetup appDomainSetup = new AppDomainSetup();
                appDomainSetup.ShadowCopyFiles = "true";
                appDomainSetup.ApplicationBase = Environment.CurrentDirectory;
                appDomainSetup.ApplicationBase = AppDomain.CurrentDomain.BaseDirectory;
                ownerDomain = AppDomain.CreateDomain(fileName, evidence, appDomainSetup);

                Type type = typeof(ExtensionProxy);
                proxy =
                    (ExtensionProxy)ownerDomain.CreateInstanceAndUnwrap(type.Assembly.FullName, type.FullName);
            }
            else
            {
                ownerDomain = AppDomain.CurrentDomain;
                proxy       = new ExtensionProxy();
            }

            proxy.SetEnvironment(ExtensionManager.GetInstance(), EventRouter.GetInstance(), CronTab.GetInstance(),
                                 IOManager.GetDefaultDataStorage(), IOManager.GetRootPath());
            proxy.LoadExtension(fileName);
            _extensionDomainList.Add(new ExtensionDomain()
            {
                Domain       = ownerDomain,
                Proxy        = proxy,
                AssemblyName = assemblyName,
                IsAbandoned  = false
            });
            if (autoInitialize)
            {
                proxy.Initialize();
            }
            if (existExtensionDomain != null && _isUseSeparateAppdomain)
            {
                AppDomain.Unload(existExtensionDomain.Domain);
            }
        }