<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      Quartz.NET 2.0 學(xué)習(xí)筆記(5) :實(shí)例創(chuàng)建Windows服務(wù)實(shí)現(xiàn)任務(wù)調(diào)度

      Quartz.NET 項(xiàng)目地址 http://quartznet.sourceforge.net/

      Quartz.NET 2.0 學(xué)習(xí)筆記(1) :Quartz.NET簡(jiǎn)介

      Quartz.NET 2.0 學(xué)習(xí)筆記(2) :和1.0的幾點(diǎn)不同

      Quartz.NET 2.0 學(xué)習(xí)筆記(3) :通過(guò)配置文件實(shí)現(xiàn)任務(wù)調(diào)度

      Quartz.NET 2.0 學(xué)習(xí)筆記(4) :cron表達(dá)式

      Quartz.NET 2.0 學(xué)習(xí)筆記(5) :實(shí)例創(chuàng)建Windows服務(wù)實(shí)現(xiàn)任務(wù)調(diào)度

       

      使用普通Windows服務(wù)創(chuàng)建Quartz.Net服務(wù)項(xiàng)目

      1. 首先創(chuàng)建Quartz.Net.2.0解決方案,添加 Windows服務(wù) 項(xiàng)目,添加安裝程序,修改服務(wù)運(yùn)行賬戶類型為L(zhǎng)ocalSystem(默認(rèn)為User)
      2. 添加C5.dll、Common.Logging.dll、Common.Logging.Log4Net.dll、log4net.dll、Quartz.dll引用

        C5.dll 一個(gè)C#和其他CLI語(yǔ)言的泛型集合類。.Net2.0及以上才可以使用。簡(jiǎn)介地址:http://www.itu.dk/research/c5/
        Common.Logging.dll 通用日志接口
        Common.Logging.Log4Net.dll 提供log4net對(duì)通用日志接口(Common.Logging)的實(shí)現(xiàn)
        log4net.dll 小白都知道不解釋

      3. 添加quartz.config文件 Quartz.Net的配置文件,并設(shè)置編譯時(shí)生成到輸出目錄為始終復(fù)制
      4. Windows服務(wù)文件上右鍵查看代碼,編寫Quartz服務(wù)啟動(dòng)代碼,重寫OnStart、OnStop、OnPause、OnContinue方法,分別對(duì)應(yīng)IScheduler的Start、Shutdown、PauseAll、ResumeAll方法,詳見代碼
        QuartzService.cs
        using System.ServiceProcess;
        using Common.Logging;
        using Quartz.Impl;
        
        namespace Quartz.Net.Service
        {
            public partial class QuartzService : ServiceBase
            {
                private readonly ILog logger;
                private IScheduler scheduler;
        
                public QuartzService()
                {
                    InitializeComponent();
                    logger = LogManager.GetLogger(GetType());
                    ISchedulerFactory schedulerFactory = new StdSchedulerFactory();
                    scheduler = schedulerFactory.GetScheduler();
                }
        
                protected override void OnStart(string[] args)
                {
                    scheduler.Start();
                    logger.Info("Quartz服務(wù)成功啟動(dòng)");
                }
        
                protected override void OnStop()
                {
                    scheduler.Shutdown();
                    logger.Info("Quartz服務(wù)成功終止");
                }
        
                protected override void OnPause()
                {
                    scheduler.PauseAll();
                }
        
                protected override void OnContinue()
                {
                    scheduler.ResumeAll();
                }
              
            }
        }

         

      至此Quarzt.Net 的Windows服務(wù)已成功創(chuàng)建,接下創(chuàng)建實(shí)現(xiàn)了IJob接口Quartz任務(wù)

      1. 添加Quartz.Net.Demo類庫(kù)項(xiàng)目
      2. 添加Common.Logging.dll、log4net.dll、Quartz.dll的引用(實(shí)際項(xiàng)目中Common.Logging.dll和log4net.dll任意引用一個(gè)即可,此處為演示需要)
      3. 添加DemoJob1.cs,實(shí)現(xiàn)IJob接口,日志記錄使用Common.Logging接口
        DemoJob1.cs
        using System;
        
        namespace Quartz.Net.Demo
        {
            /// <summary>
            /// 實(shí)現(xiàn)IJob接口
            /// </summary>
            public class DemoJob1 : IJob
            {
                //使用Common.Logging.dll日志接口實(shí)現(xiàn)日志記錄
                private static readonly Common.Logging.ILog logger = Common.Logging.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                #region IJob 成員
        
                public void Execute(IJobExecutionContext context)
                {
                    try
                    {
                        logger.Info("DemoJob1 任務(wù)開始運(yùn)行");
        
                        for (int i = 0; i < 10; i++)
                        {
                            logger.InfoFormat("DemoJob1 正在運(yùn)行{0}", i);
                        }
        
                        logger.Info("DemoJob1任務(wù)運(yùn)行結(jié)束");
                    }
                    catch (Exception ex)
                    {
                        logger.Error("DemoJob2 運(yùn)行異常", ex);
                    }
        
                }
        
                #endregion
            }
        }

         

      4. 添加DemoJob2.cs,實(shí)現(xiàn)IJob接口,日志記錄使用log4net
        DemoJob2.cs
        using System;
        
        namespace Quartz.Net.Demo
        {
            /// <summary>
            /// 實(shí)現(xiàn)IJob接口
            /// </summary>
            public class DemoJob2 : IJob
            {
                //使用log4net.dll日志接口實(shí)現(xiàn)日志記錄
                private static readonly log4net.ILog logger = log4net.LogManager.GetLogger(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType);
                #region IJob 成員
        
                public void Execute(IJobExecutionContext context)
                {
                    try
                    {
                        logger.Info("DemoJob2 任務(wù)開始運(yùn)行");
        
                        for (int i = 0; i < 10; i++)
                        {
                            logger.InfoFormat("DemoJob2 正在運(yùn)行{0}", i);
                        }
        
                        logger.Info("DemoJob2任務(wù)運(yùn)行結(jié)束");
                    }
                    catch (Exception ex)
                    {
                        logger.Error("DemoJob2 運(yùn)行異常", ex);
                    }
        
                }
        
                #endregion
            }
        }

         

      5. 添加quartz_jobs.xml(配置調(diào)度任務(wù))
        quartz_jobs.xml
        <?xml version="1.0" encoding="UTF-8"?>
        
        <!-- This file contains job definitions in schema version 2.0 format -->
        
        <job-scheduling-data xmlns="http://quartznet.sourceforge.net/JobSchedulingData" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" version="2.0">
        
          <processing-directives>
            <overwrite-existing-data>true</overwrite-existing-data>
          </processing-directives>
        
          <schedule>
            <!--定義示例任務(wù)1 Job-->
            <job>
              <name>DemoJob1</name>
              <group>DeomJobGroup</group>
              <description>Quartz.Net示例任務(wù)1</description>
              <job-type>Quartz.Net.Demo.DemoJob1,Quartz.Net.Demo</job-type>
              <durable>true</durable>
              <recover>false</recover>
            </job>
        
            <!--定義示例任務(wù)2 Job-->
            <job>
              <name>DemoJob2</name>
              <group>DeomJobGroup</group>
              <description>Quartz.Net示例任務(wù)2</description>
              <job-type>Quartz.Net.Demo.DemoJob2,Quartz.Net.Demo</job-type>
              <durable>true</durable>
              <recover>false</recover>
            </job>
        
            <!--定義示例任務(wù)1 觸發(fā)器 每30秒執(zhí)行一次DemoJob1任務(wù)-->
            <trigger>
              <cron>
                <name>DemoJob1Trigger</name>
                <group>DeomJobTriggerGroup</group>
                <job-name>DemoJob1</job-name>
                <job-group>DeomJobGroup</job-group>
                <cron-expression>0/30 * * * * ?</cron-expression>
              </cron>
            </trigger>
        
            <!--定義示例任務(wù)2 觸發(fā)器 每分鐘執(zhí)行一次DemoJob2任務(wù)-->
            <trigger>
              <cron>
                <name>DemoJob2Trigger1</name>
                <group>DeomJobTriggerGroup</group>
                <job-name>DemoJob2</job-name>
                <job-group>DeomJobGroup</job-group>
                <cron-expression>0 * * * * ?</cron-expression>
              </cron>
            </trigger>
        
            <!--定義示例任務(wù)2 觸發(fā)器 每天凌晨01:00執(zhí)行一次DemoJob2任務(wù)-->
            <trigger>
              <cron>
                <name>DemoJob2Trigger2</name>
                <group>DeomJobTriggerGroup</group>
                <job-name>DemoJob2</job-name>
                <job-group>DeomJobGroup</job-group>
                <cron-expression>0 0 1 * * ?</cron-expression>
              </cron>
            </trigger>
          </schedule>
        </job-scheduling-data>

         

      6. 修改app.config,配置Common.logging、log4net
        app.config
        <?xml version="1.0"?>
        <configuration>
          <configSections>
            <section name="quartz" type="System.Configuration.NameValueSectionHandler, System, Version=1.0.5000.0,Culture=neutral, PublicKeyToken=b77a5c561934e089"/>
            <section name="log4net" type="log4net.Config.Log4NetConfigurationSectionHandler, log4net"/>
            <sectionGroup name="common">
              <section name="logging" type="Common.Logging.ConfigurationSectionHandler, Common.Logging"/>
            </sectionGroup>
          </configSections>
          <common>
            <logging>
              <factoryAdapter type="Common.Logging.Log4Net.Log4NetLoggerFactoryAdapter, Common.Logging.Log4net">
                <arg key="configType" value="INLINE"/>
              </factoryAdapter>
            </logging>
          </common>
          <log4net>
            <appender name="InfoFileAppender" type="log4net.Appender.RollingFileAppender">
              <file value="log/" />
              <appendToFile value="true" />
              <param name="DatePattern" value="yyyyMMdd&quot;.txt&quot;" />
              <rollingStyle value="Date" />
              <maxSizeRollBackups value="100" />
              <maximumFileSize value="1024KB" />
              <staticLogFileName value="false" />
              <Encoding value="UTF-8" />
              <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="INFO" />
                <param name="LevelMax" value="INFO" />
              </filter>
              <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date %-5level %logger  - %message%newline" />
              </layout>
            </appender>
            <appender name="ErrorFileAppender" type="log4net.Appender.RollingFileAppender">
              <file value="log/error.txt" />
              <appendToFile value="true" />
              <rollingStyle value="Size" />
              <maxSizeRollBackups value="100" />
              <maximumFileSize value="10240KB" />
              <staticLogFileName value="true" />
              <Encoding value="UTF-8" />
              <filter type="log4net.Filter.LevelRangeFilter">
                <param name="LevelMin" value="WARN" />
                <param name="LevelMax" value="FATAL" />
              </filter>
              <layout type="log4net.Layout.PatternLayout">
                <conversionPattern value="%date %-5level %logger - %message%newline" />
              </layout>
            </appender>
            <root>
              <level value="INFO" />
              <appender-ref ref="InfoFileAppender" />
              <appender-ref ref="ErrorFileAppender" />
            </root>
          </log4net>
        
          <!-- 
            We use quartz.config for this server, you can always use configuration section if you want to.
            Configuration section has precedence here.  
          -->
          <!--
          <quartz >
          </quartz>
          -->
          <startup>
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
          </startup>
        </configuration>

         

      Quartz.Net.Service和Quartz.Net.Demo均創(chuàng)建完畢后,進(jìn)行編譯然后把我們創(chuàng)建的Quartz服務(wù)添加到系統(tǒng)的服務(wù)中去

      1. 把編譯好的如下文件拷貝到D:\QuartzService\ 
      2. 控制臺(tái)下執(zhí)行如下命令:sc create QuartzService binpath= D:\QuartzService\Quartz.Net.Service.exe 完成服務(wù)創(chuàng)建
      3. 啟動(dòng)QuartzService服務(wù)可以看到D:\QuartzService\的日志文件有如下輸出
        View Code
        2012-04-15 08:10:28,391 INFO  Quartz.Impl.StdSchedulerFactory  - Quartz.NET properties loaded from configuration file 'D:\QuartzService\quartz.config'
        2012-04-15 08:10:28,438 INFO  Quartz.Impl.StdSchedulerFactory  - Using default implementation for object serializer
        2012-04-15 08:10:28,478 INFO  Quartz.Impl.StdSchedulerFactory  - Using default implementation for ThreadExecutor
        2012-04-15 08:10:28,498 INFO  Quartz.Core.SchedulerSignalerImpl  - Initialized Scheduler Signaller of type: Quartz.Core.SchedulerSignalerImpl
        2012-04-15 08:10:28,498 INFO  Quartz.Core.QuartzScheduler  - Quartz Scheduler v.2.0.0.400 created.
        2012-04-15 08:10:28,502 INFO  Quartz.Plugin.Xml.XMLSchedulingDataProcessorPlugin  - Registering Quartz Job Initialization Plug-in.
        2012-04-15 08:10:28,517 INFO  Quartz.Simpl.RAMJobStore  - RAMJobStore initialized.
        2012-04-15 08:10:28,540 INFO  Quartz.Simpl.RemotingSchedulerExporter  - Registering remoting channel of type 'System.Runtime.Remoting.Channels.Tcp.TcpChannel' to port (555) with name (httpQuartz)
        2012-04-15 08:10:28,540 INFO  Quartz.Simpl.RemotingSchedulerExporter  - Remoting channel registered successfully
        2012-04-15 08:10:28,541 INFO  Quartz.Simpl.RemotingSchedulerExporter  - Successfully marhalled remotable scheduler under name 'QuartzScheduler'
        2012-04-15 08:10:28,543 INFO  Quartz.Core.QuartzScheduler  - Scheduler meta-data: Quartz Scheduler (v2.0.0.400) 'ServerScheduler' with instanceId 'NON_CLUSTERED'
          Scheduler class: 'Quartz.Core.QuartzScheduler' - access via remote incovation.
          NOT STARTED.
          Currently in standby mode.
          Number of jobs executed: 0
          Using thread pool 'Quartz.Simpl.SimpleThreadPool' - with 10 threads.
          Using job-store 'Quartz.Simpl.RAMJobStore' - which does not support persistence. and is not clustered.
        
        2012-04-15 08:10:28,543 INFO  Quartz.Impl.StdSchedulerFactory  - Quartz scheduler 'ServerScheduler' initialized
        2012-04-15 08:10:28,543 INFO  Quartz.Impl.StdSchedulerFactory  - Quartz scheduler version: 2.0.0.400
        2012-04-15 08:10:28,554 INFO  Quartz.Xml.XMLSchedulingDataProcessor  - Parsing XML file: D:\QuartzService\quartz_jobs.xml with systemId: ~/quartz_jobs.xml
        2012-04-15 08:10:28,930 INFO  Quartz.Xml.XMLSchedulingDataProcessor  - Adding 2 jobs, 3 triggers.
        2012-04-15 08:10:28,933 INFO  Quartz.Xml.XMLSchedulingDataProcessor  - Adding job: DeomJobGroup.DemoJob1
        2012-04-15 08:10:28,937 INFO  Quartz.Xml.XMLSchedulingDataProcessor  - Adding job: DeomJobGroup.DemoJob2
        2012-04-15 08:10:28,997 INFO  Quartz.Core.QuartzScheduler  - Scheduler ServerScheduler_$_NON_CLUSTERED started.
        2012-04-15 08:10:28,997 INFO  Quartz.Net.Service.QuartzService  - Quartz服務(wù)成功啟動(dòng)
        2012-04-15 08:10:30,041 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 任務(wù)開始運(yùn)行
        2012-04-15 08:10:30,041 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行0
        2012-04-15 08:10:30,041 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行1
        2012-04-15 08:10:30,041 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行2
        2012-04-15 08:10:30,041 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行3
        2012-04-15 08:10:30,041 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行4
        2012-04-15 08:10:30,041 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行5
        2012-04-15 08:10:30,041 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行6
        2012-04-15 08:10:30,041 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行7
        2012-04-15 08:10:30,041 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行8
        2012-04-15 08:10:30,041 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行9
        2012-04-15 08:10:30,041 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1任務(wù)運(yùn)行結(jié)束
        2012-04-15 08:11:00,002 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 任務(wù)開始運(yùn)行
        2012-04-15 08:11:00,002 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行0
        2012-04-15 08:11:00,002 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行1
        2012-04-15 08:11:00,002 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行2
        2012-04-15 08:11:00,002 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行3
        2012-04-15 08:11:00,002 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行4
        2012-04-15 08:11:00,003 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行5
        2012-04-15 08:11:00,003 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行6
        2012-04-15 08:11:00,003 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行7
        2012-04-15 08:11:00,003 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行8
        2012-04-15 08:11:00,003 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行9
        2012-04-15 08:11:00,003 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1任務(wù)運(yùn)行結(jié)束
        2012-04-15 08:11:00,003 INFO  Quartz.Net.Demo.DemoJob2  - DemoJob2 任務(wù)開始運(yùn)行
        2012-04-15 08:11:00,004 INFO  Quartz.Net.Demo.DemoJob2  - DemoJob2 正在運(yùn)行0
        2012-04-15 08:11:00,004 INFO  Quartz.Net.Demo.DemoJob2  - DemoJob2 正在運(yùn)行1
        2012-04-15 08:11:00,004 INFO  Quartz.Net.Demo.DemoJob2  - DemoJob2 正在運(yùn)行2
        2012-04-15 08:11:00,004 INFO  Quartz.Net.Demo.DemoJob2  - DemoJob2 正在運(yùn)行3
        2012-04-15 08:11:00,004 INFO  Quartz.Net.Demo.DemoJob2  - DemoJob2 正在運(yùn)行4
        2012-04-15 08:11:00,004 INFO  Quartz.Net.Demo.DemoJob2  - DemoJob2 正在運(yùn)行5
        2012-04-15 08:11:00,004 INFO  Quartz.Net.Demo.DemoJob2  - DemoJob2 正在運(yùn)行6
        2012-04-15 08:11:00,004 INFO  Quartz.Net.Demo.DemoJob2  - DemoJob2 正在運(yùn)行7
        2012-04-15 08:11:00,004 INFO  Quartz.Net.Demo.DemoJob2  - DemoJob2 正在運(yùn)行8
        2012-04-15 08:11:00,004 INFO  Quartz.Net.Demo.DemoJob2  - DemoJob2 正在運(yùn)行9
        2012-04-15 08:11:00,005 INFO  Quartz.Net.Demo.DemoJob2  - DemoJob2任務(wù)運(yùn)行結(jié)束
        2012-04-15 08:11:29,999 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 任務(wù)開始運(yùn)行
        2012-04-15 08:11:29,999 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行0
        2012-04-15 08:11:29,999 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行1
        2012-04-15 08:11:29,999 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行2
        2012-04-15 08:11:29,999 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行3
        2012-04-15 08:11:29,999 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行4
        2012-04-15 08:11:29,999 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行5
        2012-04-15 08:11:29,999 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行6
        2012-04-15 08:11:29,999 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行7
        2012-04-15 08:11:29,999 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行8
        2012-04-15 08:11:30,000 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1 正在運(yùn)行9
        2012-04-15 08:11:30,000 INFO  Quartz.Net.Demo.DemoJob1  - DemoJob1任務(wù)運(yùn)行結(jié)束
        2012-04-15 08:11:32,607 INFO  Quartz.Core.QuartzScheduler  - Scheduler ServerScheduler_$_NON_CLUSTERED shutting down.
        2012-04-15 08:11:32,608 INFO  Quartz.Core.QuartzScheduler  - Scheduler ServerScheduler_$_NON_CLUSTERED paused.
        2012-04-15 08:11:32,611 INFO  Quartz.Simpl.RemotingSchedulerExporter  - Successfully disconnected remotable scheduler
        2012-04-15 08:11:32,612 INFO  Quartz.Core.QuartzScheduler  - Scheduler ServerScheduler_$_NON_CLUSTERED Shutdown complete.
        2012-04-15 08:11:32,612 INFO  Quartz.Net.Service.QuartzService  - Quartz服務(wù)成功終止

         

      日志記錄時(shí)可以根據(jù)需要使用Common.logging或者log4net,因?yàn)镼uartz.Net使用的Common.logging的log4net實(shí)現(xiàn),所以必須同時(shí)引用這兩個(gè)dll,具體項(xiàng)目中引用這兩個(gè)任意一個(gè)效果都是一樣的(在使用log4net的前提下)

      源文件下載:Quartz-2.0Demo.rar

      PS:

      有很多人問(wèn)Quartz啟動(dòng)后,關(guān)閉服務(wù)時(shí)無(wú)法及時(shí)關(guān)閉,必須殺進(jìn)程才可以,解決方法時(shí)在調(diào)用Shutdown方法時(shí)傳入?yún)?shù)false,即不等待任務(wù)運(yùn)行結(jié)束立即關(guān)閉

      scheduler.Shutdown(false);
      
      posted @ 2012-04-15 09:35  懶惰的肥兔  閱讀(28905)  評(píng)論(81)    收藏  舉報(bào)
      主站蜘蛛池模板: 日韩一区二区大尺度在线| 成人午夜激情在线观看| 精品无码一区在线观看| 国产成人午夜精品福利| 加勒比无码人妻东京热| 美乳丰满人妻无码视频| 国产网友愉拍精品视频手机 | 少妇人妻偷人精品免费| 四虎成人在线观看免费| brazzers欧美巨大| 久久精品国产亚洲不AV麻豆| 九九久久人妻精品一区色| 亚洲AV无码东方伊甸园| 精品素人AV无码不卡在线观看| 欧美色综合天天久久综合精品 | 久久香蕉国产线看观看亚洲片| 四虎成人在线观看免费| 亚洲精品天堂在线观看| 蜜芽久久人人超碰爱香蕉| 清涧县| 久久精品国产午夜福利伦理| 亚洲第一无码AV无码专区| 最新国产精品好看的精品| 国产精品成| 国产精品综合一区二区三区 | 亚洲中文字幕av天堂| 97人妻免费碰视频碰免| 性欧美VIDEOFREE高清大喷水| 国产成人亚洲日韩欧美| 武装少女在线观看高清完整版免费| 国产99在线 | 亚洲| 狠狠人妻久久久久久综合蜜桃| 亚洲精品自拍在线视频| 无码av中文字幕久久专区| 国产女精品视频网站免费| 玩弄丰满少妇人妻视频| 无码人妻丰满熟妇区毛片18| 国产亚洲国产精品二区| 亚洲爆乳少妇无码激情| 国内精品久久久久精免费| 亚洲一区二区三区水蜜桃|