### 2021-08-15更新
------ #### RyLine V2.0.2108.1501 - *.[改进]时间同步方式采用NTP方式进行同步。
This commit is contained in:
parent
8b0edcd534
commit
c354d01b08
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -1,407 +1,407 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<doc>
|
<doc>
|
||||||
<assembly>
|
<assembly>
|
||||||
<name>MyDb_SQLite</name>
|
<name>MyDb_SQLite</name>
|
||||||
</assembly>
|
</assembly>
|
||||||
<members>
|
<members>
|
||||||
<member name="T:ryCommonDb.ClsDb">
|
<member name="T:ryCommonDb.ClsDb">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.#ctor">
|
<member name="M:ryCommonDb.ClsDb.#ctor">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.Finalize">
|
<member name="M:ryCommonDb.ClsDb.Finalize">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.#ctor(System.String,System.String)">
|
<member name="M:ryCommonDb.ClsDb.#ctor(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="DbFilePath">数据库路径</param>
|
<param name="DbFilePath">数据库路径</param>
|
||||||
<param name="PassWord">数据库密码</param>
|
<param name="PassWord">数据库密码</param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.#ctor(System.String)">
|
<member name="M:ryCommonDb.ClsDb.#ctor(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="DbFilePath">数据库路径</param>
|
<param name="DbFilePath">数据库路径</param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:ryCommonDb.ClsDb.SQLite_cn">
|
<member name="F:ryCommonDb.ClsDb.SQLite_cn">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:ryCommonDb.ClsDb.DbPath">
|
<member name="F:ryCommonDb.ClsDb.DbPath">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:ryCommonDb.ClsDb.DbPassWord">
|
<member name="F:ryCommonDb.ClsDb.DbPassWord">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ConnDb">
|
<member name="M:ryCommonDb.ClsDb.ConnDb">
|
||||||
<summary>
|
<summary>
|
||||||
连接数据库
|
连接数据库
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.SetPathPwd(System.String,System.String)">
|
<member name="M:ryCommonDb.ClsDb.SetPathPwd(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
设置路径和密码
|
设置路径和密码
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ConnDb(System.String,System.String)">
|
<member name="M:ryCommonDb.ClsDb.ConnDb(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
连接数据库
|
连接数据库
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ChangePwd(System.String)">
|
<member name="M:ryCommonDb.ClsDb.ChangePwd(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="newPwd"></param>
|
<param name="newPwd"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ConnOrCreateDb">
|
<member name="M:ryCommonDb.ClsDb.ConnOrCreateDb">
|
||||||
<summary>
|
<summary>
|
||||||
连接或创建数据库,如果数据库不存在,就创建,否则连接
|
连接或创建数据库,如果数据库不存在,就创建,否则连接
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ConnOrCreateDb(System.String,System.String)">
|
<member name="M:ryCommonDb.ClsDb.ConnOrCreateDb(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
连接或创建数据库,如果数据库不存在,就创建,否则连接
|
连接或创建数据库,如果数据库不存在,就创建,否则连接
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.CloseDb">
|
<member name="M:ryCommonDb.ClsDb.CloseDb">
|
||||||
<summary>
|
<summary>
|
||||||
关闭数据库
|
关闭数据库
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ExecuteNonQuery(System.String,System.Data.SQLite.SQLiteParameter[])">
|
<member name="M:ryCommonDb.ClsDb.ExecuteNonQuery(System.String,System.Data.SQLite.SQLiteParameter[])">
|
||||||
<summary>
|
<summary>
|
||||||
运行SQL命令
|
运行SQL命令
|
||||||
</summary>
|
</summary>
|
||||||
<param name="SQLText">SQL语句</param>
|
<param name="SQLText">SQL语句</param>
|
||||||
<param name="commandParameters">SQL命令参数</param>
|
<param name="commandParameters">SQL命令参数</param>
|
||||||
<returns>运行失败,则返回-1,否则返回影响的行数</returns>
|
<returns>运行失败,则返回-1,否则返回影响的行数</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ExecuteNonQuery(System.String)">
|
<member name="M:ryCommonDb.ClsDb.ExecuteNonQuery(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
运行SQL命令
|
运行SQL命令
|
||||||
</summary>
|
</summary>
|
||||||
<param name="SQLText">SQL语句</param>
|
<param name="SQLText">SQL语句</param>
|
||||||
<returns>运行失败,则返回-1,否则返回影响的行数</returns>
|
<returns>运行失败,则返回-1,否则返回影响的行数</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ExecuteSQL(System.String,System.Data.SQLite.SQLiteParameter[])">
|
<member name="M:ryCommonDb.ClsDb.ExecuteSQL(System.String,System.Data.SQLite.SQLiteParameter[])">
|
||||||
<summary>
|
<summary>
|
||||||
运行SQL命令,并返回结果
|
运行SQL命令,并返回结果
|
||||||
</summary>
|
</summary>
|
||||||
<param name="SQLText">SQL语句</param>
|
<param name="SQLText">SQL语句</param>
|
||||||
<param name="commandParameters">SQL命令参数</param>
|
<param name="commandParameters">SQL命令参数</param>
|
||||||
<returns>运行失败,则返回null,否则返回以数组显示的字符串</returns>
|
<returns>运行失败,则返回null,否则返回以数组显示的字符串</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ExecuteSQL(System.String,System.Data.SQLite.SQLiteParameter[],System.String)">
|
<member name="M:ryCommonDb.ClsDb.ExecuteSQL(System.String,System.Data.SQLite.SQLiteParameter[],System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
运行SQL命令,并返回结果
|
运行SQL命令,并返回结果
|
||||||
</summary>
|
</summary>
|
||||||
<param name="SQLText">SQL语句</param>
|
<param name="SQLText">SQL语句</param>
|
||||||
<param name="commandParameters">SQL命令参数</param>
|
<param name="commandParameters">SQL命令参数</param>
|
||||||
<param name="DefFristValue">数组第一个默认的值</param>
|
<param name="DefFristValue">数组第一个默认的值</param>
|
||||||
<returns>运行失败,则返回null,否则返回以数组显示的字符串</returns>
|
<returns>运行失败,则返回null,否则返回以数组显示的字符串</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ExecuteSQL(System.String)">
|
<member name="M:ryCommonDb.ClsDb.ExecuteSQL(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
运行SQL命令,并返回结果
|
运行SQL命令,并返回结果
|
||||||
</summary>
|
</summary>
|
||||||
<param name="SQLText">SQL语句</param>
|
<param name="SQLText">SQL语句</param>
|
||||||
<returns>运行失败,则返回null,否则返回以数组显示的字符串</returns>
|
<returns>运行失败,则返回null,否则返回以数组显示的字符串</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ExecuteSQL(System.String,System.String)">
|
<member name="M:ryCommonDb.ClsDb.ExecuteSQL(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
运行SQL命令,并返回结果
|
运行SQL命令,并返回结果
|
||||||
</summary>
|
</summary>
|
||||||
<param name="SQLText">SQL语句</param>
|
<param name="SQLText">SQL语句</param>
|
||||||
<param name="DefFristValue">数组第一个默认的值</param>
|
<param name="DefFristValue">数组第一个默认的值</param>
|
||||||
<returns>运行失败,则返回DefFristValue,否则返回以数组显示的字符串</returns>
|
<returns>运行失败,则返回DefFristValue,否则返回以数组显示的字符串</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.DeleteTable(System.String)">
|
<member name="M:ryCommonDb.ClsDb.DeleteTable(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
清空指定表的所有数据
|
清空指定表的所有数据
|
||||||
</summary>
|
</summary>
|
||||||
<param name="TableName">表名</param>
|
<param name="TableName">表名</param>
|
||||||
<returns>运行失败,则返回-1,否则返回影响的行数</returns>
|
<returns>运行失败,则返回-1,否则返回影响的行数</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ClearTableData(System.String)">
|
<member name="M:ryCommonDb.ClsDb.ClearTableData(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
清空指定表的所有数据
|
清空指定表的所有数据
|
||||||
</summary>
|
</summary>
|
||||||
<param name="TableName">表名</param>
|
<param name="TableName">表名</param>
|
||||||
<returns>运行失败,则返回-1,否则返回影响的行数</returns>
|
<returns>运行失败,则返回-1,否则返回影响的行数</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.IsExistValue(System.String,System.String,System.String,System.Int32)">
|
<member name="M:ryCommonDb.ClsDb.IsExistValue(System.String,System.String,System.String,System.Int32)">
|
||||||
<summary>
|
<summary>
|
||||||
判断指定值是否存在
|
判断指定值是否存在
|
||||||
</summary>
|
</summary>
|
||||||
<param name="TableName">表名</param>
|
<param name="TableName">表名</param>
|
||||||
<param name="valueField">指定值所属字段</param>
|
<param name="valueField">指定值所属字段</param>
|
||||||
<param name="value">指定值</param>
|
<param name="value">指定值</param>
|
||||||
<param name="curId">当前id,如果是新增记录,请填写-1</param>
|
<param name="curId">当前id,如果是新增记录,请填写-1</param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ExecuteReadResult(System.String,System.Data.SQLite.SQLiteParameter[])">
|
<member name="M:ryCommonDb.ClsDb.ExecuteReadResult(System.String,System.Data.SQLite.SQLiteParameter[])">
|
||||||
<summary>
|
<summary>
|
||||||
判断SQL语句是否有结果返回
|
判断SQL语句是否有结果返回
|
||||||
</summary>
|
</summary>
|
||||||
<param name="SQLText">SQL语句</param>
|
<param name="SQLText">SQL语句</param>
|
||||||
<param name="commandParameters">SQL命令参数</param>
|
<param name="commandParameters">SQL命令参数</param>
|
||||||
<returns>运行失败,则返回-1;存在结果,返回1;不存在结果,返回0</returns>
|
<returns>运行失败,则返回-1;存在结果,返回1;不存在结果,返回0</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.ExecuteReadResult(System.String)">
|
<member name="M:ryCommonDb.ClsDb.ExecuteReadResult(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
判断SQL语句是否有结果返回
|
判断SQL语句是否有结果返回
|
||||||
</summary>
|
</summary>
|
||||||
<param name="SQLText">SQL语句</param>
|
<param name="SQLText">SQL语句</param>
|
||||||
<returns>运行失败,则返回-1;存在结果,返回1;不存在结果,返回0</returns>
|
<returns>运行失败,则返回-1;存在结果,返回1;不存在结果,返回0</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.CreateDb(System.String)">
|
<member name="M:ryCommonDb.ClsDb.CreateDb(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
创建数据库
|
创建数据库
|
||||||
</summary>
|
</summary>
|
||||||
<param name="SQLText">SQL语句</param>
|
<param name="SQLText">SQL语句</param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.CreateDbByExample">
|
<member name="M:ryCommonDb.ClsDb.CreateDbByExample">
|
||||||
<summary>
|
<summary>
|
||||||
根据内置例子创建数据库
|
根据内置例子创建数据库
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.SetSysNameValue(System.String,System.String,System.String)">
|
<member name="M:ryCommonDb.ClsDb.SetSysNameValue(System.String,System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
保存信息,如果Name不存在,系统会自动创建
|
保存信息,如果Name不存在,系统会自动创建
|
||||||
</summary>
|
</summary>
|
||||||
<returns>返回1,表示成功,0表示失败</returns>
|
<returns>返回1,表示成功,0表示失败</returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.GetValueByName(System.String,System.String,System.String)">
|
<member name="M:ryCommonDb.ClsDb.GetValueByName(System.String,System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
获取信息
|
获取信息
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.ClsDb.GetValueByName(System.String,System.String)">
|
<member name="M:ryCommonDb.ClsDb.GetValueByName(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
获取信息
|
获取信息
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:ryCommonDb.SQLiteDataProvider">
|
<member name="T:ryCommonDb.SQLiteDataProvider">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:ryCommonDb.SQLiteDataProvider.myDb">
|
<member name="F:ryCommonDb.SQLiteDataProvider.myDb">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.ConnDb(System.String)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.ConnDb(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="sql"></param>
|
<param name="sql"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.CloseDb">
|
<member name="M:ryCommonDb.SQLiteDataProvider.CloseDb">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.GetCount(System.String,System.String)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.GetCount(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="tableName"></param>
|
<param name="tableName"></param>
|
||||||
<param name="wheresql"></param>
|
<param name="wheresql"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.ChangePwd(System.String)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.ChangePwd(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="newPwd"></param>
|
<param name="newPwd"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.AddParameter(System.String,System.Object)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.AddParameter(System.String,System.Object)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="name"></param>
|
<param name="name"></param>
|
||||||
<param name="value"></param>
|
<param name="value"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.ClearParameter(System.Object,System.Object)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.ClearParameter(System.Object,System.Object)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="name"></param>
|
<param name="name"></param>
|
||||||
<param name="value"></param>
|
<param name="value"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.GetParameter">
|
<member name="M:ryCommonDb.SQLiteDataProvider.GetParameter">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.GetParameter(ryCommonDb.RyQuickSQL)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.GetParameter(ryCommonDb.RyQuickSQL)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="mySQL"></param>
|
<param name="mySQL"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.GetPageSQL(System.String,System.String,System.String)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.GetPageSQL(System.String,System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="tableName"></param>
|
<param name="tableName"></param>
|
||||||
<param name="wheresql"></param>
|
<param name="wheresql"></param>
|
||||||
<param name="orderSQL"></param>
|
<param name="orderSQL"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.GetPageSQL2(System.String,System.String,System.String)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.GetPageSQL2(System.String,System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="tableName"></param>
|
<param name="tableName"></param>
|
||||||
<param name="wheresql"></param>
|
<param name="wheresql"></param>
|
||||||
<param name="orderSQL"></param>
|
<param name="orderSQL"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.GetPageSQL(System.String,System.String,System.String,System.String)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.GetPageSQL(System.String,System.String,System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="field"></param>
|
<param name="field"></param>
|
||||||
<param name="tableName"></param>
|
<param name="tableName"></param>
|
||||||
<param name="wheresql"></param>
|
<param name="wheresql"></param>
|
||||||
<param name="orderSQL"></param>
|
<param name="orderSQL"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.GetPageSQL2(System.String,System.String,System.String,System.String)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.GetPageSQL2(System.String,System.String,System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="field"></param>
|
<param name="field"></param>
|
||||||
<param name="tableName"></param>
|
<param name="tableName"></param>
|
||||||
<param name="wheresql"></param>
|
<param name="wheresql"></param>
|
||||||
<param name="orderSQL"></param>
|
<param name="orderSQL"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.ContainsData(System.String,System.Object[])">
|
<member name="M:ryCommonDb.SQLiteDataProvider.ContainsData(System.String,System.Object[])">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="sql"></param>
|
<param name="sql"></param>
|
||||||
<param name="Parameter"></param>
|
<param name="Parameter"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.ReadData(System.String,System.Object[])">
|
<member name="M:ryCommonDb.SQLiteDataProvider.ReadData(System.String,System.Object[])">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="sql"></param>
|
<param name="sql"></param>
|
||||||
<param name="Parameter"></param>
|
<param name="Parameter"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.ReadData(System.String,ryCommonDb.RyQuickSQL)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.ReadData(System.String,ryCommonDb.RyQuickSQL)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="sql"></param>
|
<param name="sql"></param>
|
||||||
<param name="mySQL"></param>
|
<param name="mySQL"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.ReadData(System.String)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.ReadData(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="sql"></param>
|
<param name="sql"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.ReadData(System.String,System.String)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.ReadData(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="tableName"></param>
|
<param name="tableName"></param>
|
||||||
<param name="id"></param>
|
<param name="id"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(System.String,System.Object[])">
|
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(System.String,System.Object[])">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="sql"></param>
|
<param name="sql"></param>
|
||||||
<param name="Parameter"></param>
|
<param name="Parameter"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(System.String,ryCommonDb.RyQuickSQL)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(System.String,ryCommonDb.RyQuickSQL)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="sql"></param>
|
<param name="sql"></param>
|
||||||
<param name="mySQL"></param>
|
<param name="mySQL"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(System.String)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.ExecuteNonQuery(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="sql"></param>
|
<param name="sql"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.BeginTransaction">
|
<member name="M:ryCommonDb.SQLiteDataProvider.BeginTransaction">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.Commit">
|
<member name="M:ryCommonDb.SQLiteDataProvider.Commit">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.DelById(System.String,System.String)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.DelById(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="tableName"></param>
|
<param name="tableName"></param>
|
||||||
<param name="id"></param>
|
<param name="id"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.CreateDb(ryCommonDb.RyQuickSQL)">
|
<member name="M:ryCommonDb.SQLiteDataProvider.CreateDb(ryCommonDb.RyQuickSQL)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="mySQL"></param>
|
<param name="mySQL"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:ryCommonDb.SQLiteDataProvider.Free">
|
<member name="M:ryCommonDb.SQLiteDataProvider.Free">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
@ -1,489 +1,489 @@
|
||||||
<?xml version="1.0"?>
|
<?xml version="1.0"?>
|
||||||
<doc>
|
<doc>
|
||||||
<assembly>
|
<assembly>
|
||||||
<name>ryUpdate</name>
|
<name>ryUpdate</name>
|
||||||
</assembly>
|
</assembly>
|
||||||
<members>
|
<members>
|
||||||
<member name="T:LiveUpdate.ClsLiveUpdate">
|
<member name="T:LiveUpdate.ClsLiveUpdate">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.ClsLiveUpdate.UpdateUrl">
|
<member name="F:LiveUpdate.ClsLiveUpdate.UpdateUrl">
|
||||||
<summary>
|
<summary>
|
||||||
升级地址
|
升级地址
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.ClsLiveUpdate.CurUserId">
|
<member name="F:LiveUpdate.ClsLiveUpdate.CurUserId">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.ClsLiveUpdate.UpdateAfterTime">
|
<member name="F:LiveUpdate.ClsLiveUpdate.UpdateAfterTime">
|
||||||
<summary>
|
<summary>
|
||||||
隔多久后再次检查更新
|
隔多久后再次检查更新
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.ClsLiveUpdate.SettingPath">
|
<member name="F:LiveUpdate.ClsLiveUpdate.SettingPath">
|
||||||
<summary>
|
<summary>
|
||||||
本地保存的配置信息
|
本地保存的配置信息
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.ClsLiveUpdate.MySoftVer">
|
<member name="F:LiveUpdate.ClsLiveUpdate.MySoftVer">
|
||||||
<summary>
|
<summary>
|
||||||
当前安装的软件版本
|
当前安装的软件版本
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.ClsLiveUpdate.MySoftRVer">
|
<member name="F:LiveUpdate.ClsLiveUpdate.MySoftRVer">
|
||||||
<summary>
|
<summary>
|
||||||
当前安装的软件修正版本
|
当前安装的软件修正版本
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.ClsLiveUpdate.MyDataVer">
|
<member name="F:LiveUpdate.ClsLiveUpdate.MyDataVer">
|
||||||
<summary>
|
<summary>
|
||||||
当前安装的数据库版本
|
当前安装的数据库版本
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.ClsLiveUpdate.SaveFileName">
|
<member name="F:LiveUpdate.ClsLiveUpdate.SaveFileName">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.ClsLiveUpdate.DownUrl">
|
<member name="F:LiveUpdate.ClsLiveUpdate.DownUrl">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.ClsLiveUpdate.isExit">
|
<member name="F:LiveUpdate.ClsLiveUpdate.isExit">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.ClsLiveUpdate.UpdateType">
|
<member name="P:LiveUpdate.ClsLiveUpdate.UpdateType">
|
||||||
<summary>
|
<summary>
|
||||||
获取当前更新的类型
|
获取当前更新的类型
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.ClsLiveUpdate.UpdateLoopHours">
|
<member name="F:LiveUpdate.ClsLiveUpdate.UpdateLoopHours">
|
||||||
<summary>
|
<summary>
|
||||||
每隔n小时检测一次更新
|
每隔n小时检测一次更新
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="E:LiveUpdate.ClsLiveUpdate.OnReadComplete">
|
<member name="E:LiveUpdate.ClsLiveUpdate.OnReadComplete">
|
||||||
<summary>
|
<summary>
|
||||||
读取版本信息完成后激发
|
读取版本信息完成后激发
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="E:LiveUpdate.ClsLiveUpdate.OnNoUpdate">
|
<member name="E:LiveUpdate.ClsLiveUpdate.OnNoUpdate">
|
||||||
<summary>
|
<summary>
|
||||||
没有版本更新时激发
|
没有版本更新时激发
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="E:LiveUpdate.ClsLiveUpdate.OnUpdateComplete">
|
<member name="E:LiveUpdate.ClsLiveUpdate.OnUpdateComplete">
|
||||||
<summary>
|
<summary>
|
||||||
发现新版本时激发
|
发现新版本时激发
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="E:LiveUpdate.ClsLiveUpdate.OnHappenError">
|
<member name="E:LiveUpdate.ClsLiveUpdate.OnHappenError">
|
||||||
<summary>
|
<summary>
|
||||||
发生错误后激发
|
发生错误后激发
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="E:LiveUpdate.ClsLiveUpdate.ProgressChanged">
|
<member name="E:LiveUpdate.ClsLiveUpdate.ProgressChanged">
|
||||||
<summary>
|
<summary>
|
||||||
更新进度变化后激发
|
更新进度变化后激发
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.ClsLiveUpdate.StartLiveUpdate">
|
<member name="M:LiveUpdate.ClsLiveUpdate.StartLiveUpdate">
|
||||||
<summary>
|
<summary>
|
||||||
开始检测新版本
|
开始检测新版本
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.ClsLiveUpdate.ParentForm">
|
<member name="F:LiveUpdate.ClsLiveUpdate.ParentForm">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.ClsLiveUpdate.#ctor(System.Windows.Forms.Form)">
|
<member name="M:LiveUpdate.ClsLiveUpdate.#ctor(System.Windows.Forms.Form)">
|
||||||
<summary>
|
<summary>
|
||||||
初始化升级函数
|
初始化升级函数
|
||||||
</summary>
|
</summary>
|
||||||
<param name="ower">为null,则表示事件运行在多线程模式下,否则,事件是在窗体所在线程下</param>
|
<param name="ower">为null,则表示事件运行在多线程模式下,否则,事件是在窗体所在线程下</param>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.ClsLiveUpdate.AssemblyVersion">
|
<member name="P:LiveUpdate.ClsLiveUpdate.AssemblyVersion">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.ClsLiveUpdate.AssemblyReVersion">
|
<member name="P:LiveUpdate.ClsLiveUpdate.AssemblyReVersion">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.ClsLiveUpdate.GetVerInfo">
|
<member name="M:LiveUpdate.ClsLiveUpdate.GetVerInfo">
|
||||||
<summary>
|
<summary>
|
||||||
获取版本信息
|
获取版本信息
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.ClsLiveUpdate.StartDownload">
|
<member name="M:LiveUpdate.ClsLiveUpdate.StartDownload">
|
||||||
<summary>
|
<summary>
|
||||||
开始下载
|
开始下载
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.ClsLiveUpdate.StartDownload(System.String,System.String)">
|
<member name="M:LiveUpdate.ClsLiveUpdate.StartDownload(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
开始下载
|
开始下载
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.ClsLiveUpdate.DownloadInUI(System.String,System.String)">
|
<member name="M:LiveUpdate.ClsLiveUpdate.DownloadInUI(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
下载,不使用多线程
|
下载,不使用多线程
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.ClsLiveUpdate.StopDownload">
|
<member name="M:LiveUpdate.ClsLiveUpdate.StopDownload">
|
||||||
<summary>
|
<summary>
|
||||||
结束下载
|
结束下载
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:LiveUpdate.RyUpdate">
|
<member name="T:LiveUpdate.RyUpdate">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.RyUpdate.myLiveUpdate">
|
<member name="F:LiveUpdate.RyUpdate.myLiveUpdate">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.RyUpdate.dict_downlist">
|
<member name="F:LiveUpdate.RyUpdate.dict_downlist">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.RyUpdate.#ctor(System.String)">
|
<member name="M:LiveUpdate.RyUpdate.#ctor(System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="url"></param>
|
<param name="url"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.RyUpdate.#ctor(System.Windows.Forms.Form,System.String)">
|
<member name="M:LiveUpdate.RyUpdate.#ctor(System.Windows.Forms.Form,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="_ParentForm"></param>
|
<param name="_ParentForm"></param>
|
||||||
<param name="url"></param>
|
<param name="url"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.RyUpdate.Finalize">
|
<member name="M:LiveUpdate.RyUpdate.Finalize">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.RyUpdate.CurUserId">
|
<member name="P:LiveUpdate.RyUpdate.CurUserId">
|
||||||
<summary>
|
<summary>
|
||||||
当前登陆用户
|
当前登陆用户
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.RyUpdate.ParentForm">
|
<member name="P:LiveUpdate.RyUpdate.ParentForm">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="E:LiveUpdate.RyUpdate.OnNoUpdate">
|
<member name="E:LiveUpdate.RyUpdate.OnNoUpdate">
|
||||||
<summary>
|
<summary>
|
||||||
没有版本更新时激发
|
没有版本更新时激发
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.RyUpdate.CheckUpdate">
|
<member name="M:LiveUpdate.RyUpdate.CheckUpdate">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="E:LiveUpdate.RyUpdate.OnUpdateCancel">
|
<member name="E:LiveUpdate.RyUpdate.OnUpdateCancel">
|
||||||
<summary>
|
<summary>
|
||||||
取消更新。
|
取消更新。
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="E:LiveUpdate.RyUpdate.OnAppExit">
|
<member name="E:LiveUpdate.RyUpdate.OnAppExit">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:LiveUpdate.frmStartUpdate">
|
<member name="T:LiveUpdate.frmStartUpdate">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.frmStartUpdate.#ctor">
|
<member name="M:LiveUpdate.frmStartUpdate.#ctor">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.frmStartUpdate.T_myLiveUpdate">
|
<member name="P:LiveUpdate.frmStartUpdate.T_myLiveUpdate">
|
||||||
<summary>
|
<summary>
|
||||||
设置升级
|
设置升级
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.frmStartUpdate.T_isUpdate">
|
<member name="P:LiveUpdate.frmStartUpdate.T_isUpdate">
|
||||||
<summary>
|
<summary>
|
||||||
是否是在线更新
|
是否是在线更新
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.frmStartUpdate.RunFile(System.String,System.String)">
|
<member name="M:LiveUpdate.frmStartUpdate.RunFile(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="FilePath"></param>
|
<param name="FilePath"></param>
|
||||||
<param name="PramCom"></param>
|
<param name="PramCom"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="E:LiveUpdate.frmStartUpdate.OnAppExit">
|
<member name="E:LiveUpdate.frmStartUpdate.OnAppExit">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.frmStartUpdate.components">
|
<member name="F:LiveUpdate.frmStartUpdate.components">
|
||||||
<summary>
|
<summary>
|
||||||
Required designer variable.
|
Required designer variable.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.frmStartUpdate.Dispose(System.Boolean)">
|
<member name="M:LiveUpdate.frmStartUpdate.Dispose(System.Boolean)">
|
||||||
<summary>
|
<summary>
|
||||||
Clean up any resources being used.
|
Clean up any resources being used.
|
||||||
</summary>
|
</summary>
|
||||||
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.frmStartUpdate.InitializeComponent">
|
<member name="M:LiveUpdate.frmStartUpdate.InitializeComponent">
|
||||||
<summary>
|
<summary>
|
||||||
Required method for Designer support - do not modify
|
Required method for Designer support - do not modify
|
||||||
the contents of this method with the code editor.
|
the contents of this method with the code editor.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:LiveUpdate.FrmUpdate">
|
<member name="T:LiveUpdate.FrmUpdate">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.FrmUpdate.#ctor(LiveUpdate.ClsLiveUpdate)">
|
<member name="M:LiveUpdate.FrmUpdate.#ctor(LiveUpdate.ClsLiveUpdate)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="_myLiveUpdate"></param>
|
<param name="_myLiveUpdate"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.FrmUpdate.T_Capion">
|
<member name="P:LiveUpdate.FrmUpdate.T_Capion">
|
||||||
<summary>
|
<summary>
|
||||||
提示文本
|
提示文本
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.FrmUpdate.T_UpdateDate">
|
<member name="P:LiveUpdate.FrmUpdate.T_UpdateDate">
|
||||||
<summary>
|
<summary>
|
||||||
更新日期
|
更新日期
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.FrmUpdate.T_UpdateVer">
|
<member name="P:LiveUpdate.FrmUpdate.T_UpdateVer">
|
||||||
<summary>
|
<summary>
|
||||||
更新版本
|
更新版本
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.FrmUpdate.T_UpdateDes">
|
<member name="P:LiveUpdate.FrmUpdate.T_UpdateDes">
|
||||||
<summary>
|
<summary>
|
||||||
更新描述
|
更新描述
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.FrmUpdate.ConvertDateStr(System.String,System.String)">
|
<member name="M:LiveUpdate.FrmUpdate.ConvertDateStr(System.String,System.String)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="Str"></param>
|
<param name="Str"></param>
|
||||||
<param name="defValue"></param>
|
<param name="defValue"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.FrmUpdate.SetUpdateInfo(LiveUpdate.UpdateInfo)">
|
<member name="M:LiveUpdate.FrmUpdate.SetUpdateInfo(LiveUpdate.UpdateInfo)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="e"></param>
|
<param name="e"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.FrmUpdate.T_UpdateAfterTime">
|
<member name="P:LiveUpdate.FrmUpdate.T_UpdateAfterTime">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.FrmUpdate.canClose">
|
<member name="F:LiveUpdate.FrmUpdate.canClose">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.FrmUpdate.SetForegroundWindow(System.Int32)">
|
<member name="M:LiveUpdate.FrmUpdate.SetForegroundWindow(System.Int32)">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="hWnd"></param>
|
<param name="hWnd"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
<member name="E:LiveUpdate.FrmUpdate.OnAppExit">
|
<member name="E:LiveUpdate.FrmUpdate.OnAppExit">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.FrmUpdate.components">
|
<member name="F:LiveUpdate.FrmUpdate.components">
|
||||||
<summary>
|
<summary>
|
||||||
Required designer variable.
|
Required designer variable.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.FrmUpdate.Dispose(System.Boolean)">
|
<member name="M:LiveUpdate.FrmUpdate.Dispose(System.Boolean)">
|
||||||
<summary>
|
<summary>
|
||||||
Clean up any resources being used.
|
Clean up any resources being used.
|
||||||
</summary>
|
</summary>
|
||||||
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
<param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.FrmUpdate.InitializeComponent">
|
<member name="M:LiveUpdate.FrmUpdate.InitializeComponent">
|
||||||
<summary>
|
<summary>
|
||||||
Required method for Designer support - do not modify
|
Required method for Designer support - do not modify
|
||||||
the contents of this method with the code editor.
|
the contents of this method with the code editor.
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:LiveUpdate.UpdateInfo">
|
<member name="T:LiveUpdate.UpdateInfo">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.UpdateInfo.UpdateType">
|
<member name="F:LiveUpdate.UpdateInfo.UpdateType">
|
||||||
<summary>
|
<summary>
|
||||||
更新类型,soft或者data
|
更新类型,soft或者data
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.UpdateInfo.UpdateDes_Url">
|
<member name="F:LiveUpdate.UpdateInfo.UpdateDes_Url">
|
||||||
<summary>
|
<summary>
|
||||||
更新描述Url
|
更新描述Url
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.UpdateInfo.UpdateDes">
|
<member name="F:LiveUpdate.UpdateInfo.UpdateDes">
|
||||||
<summary>
|
<summary>
|
||||||
更新描述
|
更新描述
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.UpdateInfo.UpdateVer">
|
<member name="F:LiveUpdate.UpdateInfo.UpdateVer">
|
||||||
<summary>
|
<summary>
|
||||||
版本
|
版本
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.UpdateInfo.UpdateDate">
|
<member name="F:LiveUpdate.UpdateInfo.UpdateDate">
|
||||||
<summary>
|
<summary>
|
||||||
更新日期
|
更新日期
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.UpdateInfo.UpdateUrl">
|
<member name="F:LiveUpdate.UpdateInfo.UpdateUrl">
|
||||||
<summary>
|
<summary>
|
||||||
更新地址
|
更新地址
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.UpdateInfo.FirstDownList">
|
<member name="F:LiveUpdate.UpdateInfo.FirstDownList">
|
||||||
<summary>
|
<summary>
|
||||||
在下载升级包前首先要下载的内容
|
在下载升级包前首先要下载的内容
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.UpdateInfo.sxSettingXML">
|
<member name="F:LiveUpdate.UpdateInfo.sxSettingXML">
|
||||||
<summary>
|
<summary>
|
||||||
升级程序要使用的设置xml
|
升级程序要使用的设置xml
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:LiveUpdate.UpdateErrorInfo">
|
<member name="T:LiveUpdate.UpdateErrorInfo">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.UpdateErrorInfo.ErrorStr">
|
<member name="F:LiveUpdate.UpdateErrorInfo.ErrorStr">
|
||||||
<summary>
|
<summary>
|
||||||
错误字符串
|
错误字符串
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:LiveUpdate.UpdateErrorInfo.ErrorId">
|
<member name="F:LiveUpdate.UpdateErrorInfo.ErrorId">
|
||||||
<summary>
|
<summary>
|
||||||
错误id
|
错误id
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:LiveUpdate.LiveUpdateEventArgs">
|
<member name="T:LiveUpdate.LiveUpdateEventArgs">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="M:LiveUpdate.LiveUpdateEventArgs.#ctor">
|
<member name="M:LiveUpdate.LiveUpdateEventArgs.#ctor">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrentFileSize">
|
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrentFileSize">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrentFileName">
|
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrentFileName">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrentUrl">
|
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrentUrl">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrProgress">
|
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrProgress">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.LiveUpdateEventArgs.IsCompleted">
|
<member name="P:LiveUpdate.LiveUpdateEventArgs.IsCompleted">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrentStatus">
|
<member name="P:LiveUpdate.LiveUpdateEventArgs.CurrentStatus">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:LiveUpdate.LiveUpdateProgressChanged">
|
<member name="T:LiveUpdate.LiveUpdateProgressChanged">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="sender"></param>
|
<param name="sender"></param>
|
||||||
<param name="e"></param>
|
<param name="e"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:LiveUpdate.OnAppExit">
|
<member name="T:LiveUpdate.OnAppExit">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="sender"></param>
|
<param name="sender"></param>
|
||||||
<param name="e"></param>
|
<param name="e"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:LiveUpdate.UpdateHandler">
|
<member name="T:LiveUpdate.UpdateHandler">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="e"></param>
|
<param name="e"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:LiveUpdate.ErrorHandler">
|
<member name="T:LiveUpdate.ErrorHandler">
|
||||||
<summary>
|
<summary>
|
||||||
|
|
||||||
</summary>
|
</summary>
|
||||||
<param name="e"></param>
|
<param name="e"></param>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:ryUpdate.Properties.Resources">
|
<member name="T:ryUpdate.Properties.Resources">
|
||||||
<summary>
|
<summary>
|
||||||
一个强类型的资源类,用于查找本地化的字符串等。
|
一个强类型的资源类,用于查找本地化的字符串等。
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:ryUpdate.Properties.Resources.ResourceManager">
|
<member name="P:ryUpdate.Properties.Resources.ResourceManager">
|
||||||
<summary>
|
<summary>
|
||||||
返回此类使用的缓存的 ResourceManager 实例。
|
返回此类使用的缓存的 ResourceManager 实例。
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:ryUpdate.Properties.Resources.Culture">
|
<member name="P:ryUpdate.Properties.Resources.Culture">
|
||||||
<summary>
|
<summary>
|
||||||
重写当前线程的 CurrentUICulture 属性,对
|
重写当前线程的 CurrentUICulture 属性,对
|
||||||
使用此强类型资源类的所有资源查找执行重写。
|
使用此强类型资源类的所有资源查找执行重写。
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
</members>
|
</members>
|
||||||
</doc>
|
</doc>
|
||||||
|
|
BIN
Bin/Debug/MyTimeClock/x64/SQLite.Interop.dll
Normal file
BIN
Bin/Debug/MyTimeClock/x64/SQLite.Interop.dll
Normal file
Binary file not shown.
BIN
Bin/Debug/MyTimeClock/x86/SQLite.Interop.dll
Normal file
BIN
Bin/Debug/MyTimeClock/x86/SQLite.Interop.dll
Normal file
Binary file not shown.
|
@ -1,4 +1,9 @@
|
||||||
### 2021-03-10更新
|
### 2021-08-15更新
|
||||||
|
------
|
||||||
|
#### RyLine V2.0.2108.1501
|
||||||
|
- *.[改进]时间同步方式采用NTP方式进行同步。
|
||||||
|
|
||||||
|
### 2021-03-10更新
|
||||||
------
|
------
|
||||||
#### TimeClock V1.0.2103.1001
|
#### TimeClock V1.0.2103.1001
|
||||||
- *.[新增]新增支持新组件库。
|
- *.[新增]新增支持新组件库。
|
||||||
|
|
Binary file not shown.
|
@ -12,7 +12,7 @@
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
|
|
687
Source/MyTimeClock/RyLine/NTPClient.cs
Normal file
687
Source/MyTimeClock/RyLine/NTPClient.cs
Normal file
|
@ -0,0 +1,687 @@
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Net;
|
||||||
|
using System.Net.Sockets;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace RyLine
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// SNTPClient is a C# class designed to connect to time servers on the Internet and
|
||||||
|
/// fetch the current date and time. Optionally, it may update the time of the local system.
|
||||||
|
/// The implementation of the protocol is based on the RFC 2030.
|
||||||
|
///
|
||||||
|
/// Public class members:
|
||||||
|
///
|
||||||
|
/// Initialize - Sets up data structure and prepares for connection.
|
||||||
|
///
|
||||||
|
/// Connect - Connects to the time server and populates the data structure.
|
||||||
|
/// It can also update the system time.
|
||||||
|
///
|
||||||
|
/// IsResponseValid - Returns true if received data is valid and if comes from
|
||||||
|
/// a NTP-compliant time server.
|
||||||
|
///
|
||||||
|
/// ToString - Returns a string representation of the object.
|
||||||
|
///
|
||||||
|
/// -----------------------------------------------------------------------------
|
||||||
|
/// Structure of the standard NTP header (as described in RFC 2030)
|
||||||
|
/// 1 2 3
|
||||||
|
/// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
/// |LI | VN |Mode | Stratum | Poll | Precision |
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
/// | Root Delay |
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
/// | Root Dispersion |
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
/// | Reference Identifier |
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
/// | |
|
||||||
|
/// | Reference Timestamp (64) |
|
||||||
|
/// | |
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
/// | |
|
||||||
|
/// | Originate Timestamp (64) |
|
||||||
|
/// | |
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
/// | |
|
||||||
|
/// | Receive Timestamp (64) |
|
||||||
|
/// | |
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
/// | |
|
||||||
|
/// | Transmit Timestamp (64) |
|
||||||
|
/// | |
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
/// | Key Identifier (optional) (32) |
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
/// | |
|
||||||
|
/// | |
|
||||||
|
/// | Message Digest (optional) (128) |
|
||||||
|
/// | |
|
||||||
|
/// | |
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
///
|
||||||
|
/// -----------------------------------------------------------------------------
|
||||||
|
///
|
||||||
|
/// SNTP Timestamp Format (as described in RFC 2030)
|
||||||
|
/// 1 2 3
|
||||||
|
/// 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
/// | Seconds |
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
/// | Seconds Fraction (0-padded) |
|
||||||
|
/// +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public class NTPClient
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// SNTP Data Structure Length
|
||||||
|
/// </summary>
|
||||||
|
private const byte SNTPDataLength = 48;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SNTP Data Structure (as described in RFC 2030)
|
||||||
|
/// </summary>
|
||||||
|
byte[] SNTPData = new byte[SNTPDataLength];
|
||||||
|
|
||||||
|
//Offset constants for timestamps in the data structure
|
||||||
|
private const byte offReferenceID = 12;
|
||||||
|
private const byte offReferenceTimestamp = 16;
|
||||||
|
private const byte offOriginateTimestamp = 24;
|
||||||
|
private const byte offReceiveTimestamp = 32;
|
||||||
|
private const byte offTransmitTimestamp = 40;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Leap Indicator Warns of an impending leap second to be inserted/deleted in the last minute of the current day. 值为“11”时表示告警状态,时钟未被同步。为其他值时NTP本身不做处理
|
||||||
|
/// </summary>
|
||||||
|
public _LeapIndicator LeapIndicator
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// Isolate the two most significant bits
|
||||||
|
byte val = (byte)(SNTPData[0] >> 6);
|
||||||
|
switch (val)
|
||||||
|
{
|
||||||
|
case 0: return _LeapIndicator.NoWarning;
|
||||||
|
case 1: return _LeapIndicator.LastMinute61;
|
||||||
|
case 2: return _LeapIndicator.LastMinute59;
|
||||||
|
case 3: goto default;
|
||||||
|
default:
|
||||||
|
return _LeapIndicator.Alarm;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Version Number Version number of the protocol (3 or 4) NTP的版本号
|
||||||
|
/// </summary>
|
||||||
|
public byte VersionNumber
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// Isolate bits 3 - 5
|
||||||
|
byte val = (byte)((SNTPData[0] & 0x38) >> 3);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Mode 长度为3比特,表示NTP的工作模式。不同的值所表示的含义分别是:0未定义、1表示主动对等体模式、2表示被动对等体模式、3表示客户模式、4表示服务器模式、5表示广播模式或组播模式、6表示此报文为NTP控制报文、7预留给内部使用
|
||||||
|
/// </summary>
|
||||||
|
public _Mode Mode
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// Isolate bits 0 - 3
|
||||||
|
byte val = (byte)(SNTPData[0] & 0x7);
|
||||||
|
switch (val)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
return _Mode.Unknown;
|
||||||
|
case 6:
|
||||||
|
return _Mode.Unknown;
|
||||||
|
case 7:
|
||||||
|
return _Mode.Unknown;
|
||||||
|
default:
|
||||||
|
return _Mode.Unknown;
|
||||||
|
case 1:
|
||||||
|
return _Mode.SymmetricActive;
|
||||||
|
case 2:
|
||||||
|
return _Mode.SymmetricPassive;
|
||||||
|
case 3:
|
||||||
|
return _Mode.Client;
|
||||||
|
case 4:
|
||||||
|
return _Mode.Server;
|
||||||
|
case 5:
|
||||||
|
return _Mode.Broadcast;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stratum 系统时钟的层数,取值范围为1~16,它定义了时钟的准确度。层数为1的时钟准确度最高,准确度从1到16依次递减,层数为16的时钟处于未同步状态,不能作为参考时钟
|
||||||
|
/// </summary>
|
||||||
|
public _Stratum Stratum
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
byte val = (byte)SNTPData[1];
|
||||||
|
if (val == 0) return _Stratum.Unspecified;
|
||||||
|
else
|
||||||
|
if (val == 1) return _Stratum.PrimaryReference;
|
||||||
|
else
|
||||||
|
if (val <= 15) return _Stratum.SecondaryReference;
|
||||||
|
else
|
||||||
|
return _Stratum.Reserved;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Poll Interval (in seconds) Maximum interval between successive messages 轮询时间,即两个连续NTP报文之间的时间间隔
|
||||||
|
/// </summary>
|
||||||
|
public uint PollInterval
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// Thanks to Jim Hollenhorst <hollenho@attbi.com>
|
||||||
|
return (uint)(Math.Pow(2, (sbyte)SNTPData[2]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Precision (in seconds) Precision of the clock 系统时钟的精度
|
||||||
|
/// </summary>
|
||||||
|
public double Precision
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// Thanks to Jim Hollenhorst <hollenho@attbi.com>
|
||||||
|
return (Math.Pow(2, (sbyte)SNTPData[3]));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Root Delay (in milliseconds) Round trip time to the primary reference source NTP服务器到主参考时钟的延迟
|
||||||
|
/// </summary>
|
||||||
|
public double RootDelay
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
int temp = 0;
|
||||||
|
temp = 256 * (256 * (256 * SNTPData[4] + SNTPData[5]) + SNTPData[6]) + SNTPData[7];
|
||||||
|
return 1000 * (((double)temp) / 0x10000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Root Dispersion (in milliseconds) Nominal error relative to the primary reference source 系统时钟相对于主参考时钟的最大误差
|
||||||
|
/// </summary>
|
||||||
|
public double RootDispersion
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
int temp = 0;
|
||||||
|
temp = 256 * (256 * (256 * SNTPData[8] + SNTPData[9]) + SNTPData[10]) + SNTPData[11];
|
||||||
|
return 1000 * (((double)temp) / 0x10000);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reference Identifier Reference identifier (either a 4 character string or an IP address)
|
||||||
|
/// </summary>
|
||||||
|
public string ReferenceID
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
string val = "";
|
||||||
|
switch (Stratum)
|
||||||
|
{
|
||||||
|
case _Stratum.Unspecified:
|
||||||
|
goto case _Stratum.PrimaryReference;
|
||||||
|
case _Stratum.PrimaryReference:
|
||||||
|
val += (char)SNTPData[offReferenceID + 0];
|
||||||
|
val += (char)SNTPData[offReferenceID + 1];
|
||||||
|
val += (char)SNTPData[offReferenceID + 2];
|
||||||
|
val += (char)SNTPData[offReferenceID + 3];
|
||||||
|
break;
|
||||||
|
case _Stratum.SecondaryReference:
|
||||||
|
switch (VersionNumber)
|
||||||
|
{
|
||||||
|
case 3: // Version 3, Reference ID is an IPv4 address
|
||||||
|
string Address = SNTPData[offReferenceID + 0].ToString() + "." +
|
||||||
|
SNTPData[offReferenceID + 1].ToString() + "." +
|
||||||
|
SNTPData[offReferenceID + 2].ToString() + "." +
|
||||||
|
SNTPData[offReferenceID + 3].ToString();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
IPHostEntry Host = Dns.GetHostEntry(Address);
|
||||||
|
val = Host.HostName + " (" + Address + ")";
|
||||||
|
}
|
||||||
|
catch (Exception)
|
||||||
|
{
|
||||||
|
val = "N/A";
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 4: // Version 4, Reference ID is the timestamp of last update
|
||||||
|
DateTime time = ComputeDate(GetMilliSeconds(offReferenceID));
|
||||||
|
// Take care of the time zone
|
||||||
|
TimeSpan offspan = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
|
||||||
|
val = (time + offspan).ToString();
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
val = "N/A";
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Reference Timestamp The time at which the clock was last set or corrected NTP系统时钟最后一次被设定或更新的时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime ReferenceTimestamp
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
DateTime time = ComputeDate(GetMilliSeconds(offReferenceTimestamp));
|
||||||
|
// Take care of the time zone
|
||||||
|
TimeSpan offspan = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
|
||||||
|
return time + offspan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Originate Timestamp (T1) The time at which the request departed the client for the server. 发送报文时的本机时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime OriginateTimestamp
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return ComputeDate(GetMilliSeconds(offOriginateTimestamp));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Receive Timestamp (T2) The time at which the request arrived at the server. 报文到达NTP服务器时的服务器时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime ReceiveTimestamp
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
DateTime time = ComputeDate(GetMilliSeconds(offReceiveTimestamp));
|
||||||
|
// Take care of the time zone
|
||||||
|
TimeSpan offspan = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
|
||||||
|
return time + offspan;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Transmit Timestamp (T3) The time at which the reply departed the server for client. 报文从NTP服务器离开时的服务器时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime TransmitTimestamp
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
DateTime time = ComputeDate(GetMilliSeconds(offTransmitTimestamp));
|
||||||
|
// Take care of the time zone
|
||||||
|
TimeSpan offspan = TimeZone.CurrentTimeZone.GetUtcOffset(DateTime.Now);
|
||||||
|
return time + offspan;
|
||||||
|
}
|
||||||
|
set
|
||||||
|
{
|
||||||
|
SetDate(offTransmitTimestamp, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Destination Timestamp (T4) The time at which the reply arrived at the client. 接收到来自NTP服务器返回报文时的本机时间
|
||||||
|
/// </summary>
|
||||||
|
public DateTime DestinationTimestamp;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Round trip delay (in milliseconds) The time between the departure of request and arrival of reply 报文从本地到NTP服务器的往返时间
|
||||||
|
/// </summary>
|
||||||
|
public double RoundTripDelay
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// Thanks to DNH <dnharris@csrlink.net>
|
||||||
|
TimeSpan span = (DestinationTimestamp - OriginateTimestamp) - (ReceiveTimestamp - TransmitTimestamp);
|
||||||
|
return span.TotalMilliseconds;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Local clock offset (in milliseconds) The offset of the local clock relative to the primary reference source.本机相对于NTP服务器(主时钟)的时间差
|
||||||
|
/// </summary>
|
||||||
|
public double LocalClockOffset
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
// Thanks to DNH <dnharris@csrlink.net>
|
||||||
|
TimeSpan span = (ReceiveTimestamp - OriginateTimestamp) + (TransmitTimestamp - DestinationTimestamp);
|
||||||
|
return span.TotalMilliseconds / 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Compute date, given the number of milliseconds since January 1, 1900
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="milliseconds"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private DateTime ComputeDate(ulong milliseconds)
|
||||||
|
{
|
||||||
|
TimeSpan span = TimeSpan.FromMilliseconds((double)milliseconds);
|
||||||
|
DateTime time = new DateTime(1900, 1, 1);
|
||||||
|
time += span;
|
||||||
|
return time;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Compute the number of milliseconds, given the offset of a 8-byte array
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="offset"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
private ulong GetMilliSeconds(byte offset)
|
||||||
|
{
|
||||||
|
ulong intpart = 0, fractpart = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i <= 3; i++)
|
||||||
|
{
|
||||||
|
intpart = 256 * intpart + SNTPData[offset + i];
|
||||||
|
}
|
||||||
|
for (int i = 4; i <= 7; i++)
|
||||||
|
{
|
||||||
|
fractpart = 256 * fractpart + SNTPData[offset + i];
|
||||||
|
}
|
||||||
|
ulong milliseconds = intpart * 1000 + (fractpart * 1000) / 0x100000000L;
|
||||||
|
return milliseconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Compute the 8-byte array, given the date
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="offset"></param>
|
||||||
|
/// <param name="date"></param>
|
||||||
|
private void SetDate(byte offset, DateTime date)
|
||||||
|
{
|
||||||
|
ulong intpart = 0, fractpart = 0;
|
||||||
|
DateTime StartOfCentury = new DateTime(1900, 1, 1, 0, 0, 0); // January 1, 1900 12:00 AM
|
||||||
|
|
||||||
|
ulong milliseconds = (ulong)(date - StartOfCentury).TotalMilliseconds;
|
||||||
|
intpart = milliseconds / 1000;
|
||||||
|
fractpart = ((milliseconds % 1000) * 0x100000000L) / 1000;
|
||||||
|
|
||||||
|
ulong temp = intpart;
|
||||||
|
for (int i = 3; i >= 0; i--)
|
||||||
|
{
|
||||||
|
SNTPData[offset + i] = (byte)(temp % 256);
|
||||||
|
temp = temp / 256;
|
||||||
|
}
|
||||||
|
|
||||||
|
temp = fractpart;
|
||||||
|
for (int i = 7; i >= 4; i--)
|
||||||
|
{
|
||||||
|
SNTPData[offset + i] = (byte)(temp % 256);
|
||||||
|
temp = temp / 256;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Initialize the NTPClient data
|
||||||
|
/// </summary>
|
||||||
|
private void Initialize()
|
||||||
|
{
|
||||||
|
// Set version number to 4 and Mode to 3 (client)
|
||||||
|
SNTPData[0] = 0x1B;
|
||||||
|
// Initialize all other fields with 0
|
||||||
|
for (int i = 1; i < 48; i++)
|
||||||
|
{
|
||||||
|
SNTPData[i] = 0;
|
||||||
|
}
|
||||||
|
// Initialize the transmit timestamp
|
||||||
|
TransmitTimestamp = DateTime.Now;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The IPAddress of the time server we're connecting to
|
||||||
|
/// </summary>
|
||||||
|
private IPAddress serverAddress = null;
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constractor with HostName
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="host"></param>
|
||||||
|
public NTPClient(string host)
|
||||||
|
{
|
||||||
|
//string host = "ntp1.aliyun.com";
|
||||||
|
//string host = "0.asia.pool.ntp.org";
|
||||||
|
//string host = "1.asia.pool.ntp.org";
|
||||||
|
//string host = "www.ntp.org/";
|
||||||
|
|
||||||
|
// Resolve server address
|
||||||
|
IPHostEntry hostadd = Dns.GetHostEntry(host);
|
||||||
|
foreach (IPAddress address in hostadd.AddressList)
|
||||||
|
{
|
||||||
|
if (address.AddressFamily == AddressFamily.InterNetwork) //只支持IPV4协议的IP地址
|
||||||
|
{
|
||||||
|
serverAddress = address;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (serverAddress == null)
|
||||||
|
throw new Exception("Can't get any ipaddress infomation");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Constractor with IPAddress
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="address"></param>
|
||||||
|
public NTPClient(IPAddress address)
|
||||||
|
{
|
||||||
|
if (address == null)
|
||||||
|
throw new Exception("Can't get any ipaddress infomation");
|
||||||
|
|
||||||
|
serverAddress = address;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Connect to the time server and update system time
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="updateSystemTime"></param>
|
||||||
|
public void Connect(bool updateSystemTime, int timeout = 3000)
|
||||||
|
{
|
||||||
|
IPEndPoint EPhost = new IPEndPoint(serverAddress, 123);
|
||||||
|
|
||||||
|
//Connect the time server
|
||||||
|
using (UdpClient TimeSocket = new UdpClient())
|
||||||
|
{
|
||||||
|
TimeSocket.Connect(EPhost);
|
||||||
|
|
||||||
|
// Initialize data structure
|
||||||
|
Initialize();
|
||||||
|
TimeSocket.Send(SNTPData, SNTPData.Length);
|
||||||
|
TimeSocket.Client.ReceiveTimeout = timeout;
|
||||||
|
SNTPData = TimeSocket.Receive(ref EPhost);
|
||||||
|
if (!IsResponseValid)
|
||||||
|
throw new Exception("Invalid response from " + serverAddress.ToString());
|
||||||
|
}
|
||||||
|
DestinationTimestamp = DateTime.Now;
|
||||||
|
|
||||||
|
if (updateSystemTime)
|
||||||
|
SetTime();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Check if the response from server is valid
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public bool IsResponseValid
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return !(SNTPData.Length < SNTPDataLength || Mode != _Mode.Server);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Converts the object to string
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
StringBuilder sb = new StringBuilder(512);
|
||||||
|
sb.Append("Leap Indicator: ");
|
||||||
|
switch (LeapIndicator)
|
||||||
|
{
|
||||||
|
case _LeapIndicator.NoWarning:
|
||||||
|
sb.Append("No warning");
|
||||||
|
break;
|
||||||
|
case _LeapIndicator.LastMinute61:
|
||||||
|
sb.Append("Last minute has 61 seconds");
|
||||||
|
break;
|
||||||
|
case _LeapIndicator.LastMinute59:
|
||||||
|
sb.Append("Last minute has 59 seconds");
|
||||||
|
break;
|
||||||
|
case _LeapIndicator.Alarm:
|
||||||
|
sb.Append("Alarm Condition (clock not synchronized)");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
sb.AppendFormat("\r\nVersion number: {0}\r\n", VersionNumber);
|
||||||
|
sb.Append("Mode: ");
|
||||||
|
switch (Mode)
|
||||||
|
{
|
||||||
|
case _Mode.Unknown:
|
||||||
|
sb.Append("Unknown");
|
||||||
|
break;
|
||||||
|
case _Mode.SymmetricActive:
|
||||||
|
sb.Append("Symmetric Active");
|
||||||
|
break;
|
||||||
|
case _Mode.SymmetricPassive:
|
||||||
|
sb.Append("Symmetric Pasive");
|
||||||
|
break;
|
||||||
|
case _Mode.Client:
|
||||||
|
sb.Append("Client");
|
||||||
|
break;
|
||||||
|
case _Mode.Server:
|
||||||
|
sb.Append("Server");
|
||||||
|
break;
|
||||||
|
case _Mode.Broadcast:
|
||||||
|
sb.Append("Broadcast");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
sb.Append("\r\nStratum: ");
|
||||||
|
|
||||||
|
switch (Stratum)
|
||||||
|
{
|
||||||
|
case _Stratum.Unspecified:
|
||||||
|
case _Stratum.Reserved:
|
||||||
|
sb.Append("Unspecified");
|
||||||
|
break;
|
||||||
|
case _Stratum.PrimaryReference:
|
||||||
|
sb.Append("Primary Reference");
|
||||||
|
break;
|
||||||
|
case _Stratum.SecondaryReference:
|
||||||
|
sb.Append("Secondary Reference");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
sb.AppendFormat("\r\nLocal Time T3: {0:yyyy-MM-dd HH:mm:ss:fff}", TransmitTimestamp);
|
||||||
|
sb.AppendFormat("\r\nDestination Time T4: {0:yyyy-MM-dd HH:mm:ss:fff}", DestinationTimestamp);
|
||||||
|
sb.AppendFormat("\r\nPrecision: {0} s", Precision);
|
||||||
|
sb.AppendFormat("\r\nPoll Interval:{0} s", PollInterval);
|
||||||
|
sb.AppendFormat("\r\nReference ID: {0}", ReferenceID.ToString().Replace("\0", string.Empty));
|
||||||
|
sb.AppendFormat("\r\nRoot Delay: {0} ms", RootDelay);
|
||||||
|
sb.AppendFormat("\r\nRoot Dispersion: {0} ms", RootDispersion);
|
||||||
|
sb.AppendFormat("\r\nRound Trip Delay: {0} ms", RoundTripDelay);
|
||||||
|
sb.AppendFormat("\r\nLocal Clock Offset: {0} ms", LocalClockOffset);
|
||||||
|
sb.AppendFormat("\r\nReferenceTimestamp: {0:yyyy-MM-dd HH:mm:ss:fff}", ReferenceTimestamp);
|
||||||
|
sb.Append("\r\n");
|
||||||
|
|
||||||
|
return sb.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// SYSTEMTIME structure used by SetSystemTime
|
||||||
|
/// </summary>
|
||||||
|
[StructLayoutAttribute(LayoutKind.Sequential)]
|
||||||
|
private struct SYSTEMTIME
|
||||||
|
{
|
||||||
|
public short year;
|
||||||
|
public short month;
|
||||||
|
public short dayOfWeek;
|
||||||
|
public short day;
|
||||||
|
public short hour;
|
||||||
|
public short minute;
|
||||||
|
public short second;
|
||||||
|
public short milliseconds;
|
||||||
|
}
|
||||||
|
|
||||||
|
[DllImport("kernel32.dll")]
|
||||||
|
static extern bool SetLocalTime(ref SYSTEMTIME time);
|
||||||
|
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Set system time according to transmit timestamp 把本地时间设置为获取到的时钟时间
|
||||||
|
/// </summary>
|
||||||
|
public void SetTime()
|
||||||
|
{
|
||||||
|
SYSTEMTIME st;
|
||||||
|
|
||||||
|
DateTime trts = DateTime.Now.AddMilliseconds(LocalClockOffset);
|
||||||
|
|
||||||
|
st.year = (short)trts.Year;
|
||||||
|
st.month = (short)trts.Month;
|
||||||
|
st.dayOfWeek = (short)trts.DayOfWeek;
|
||||||
|
st.day = (short)trts.Day;
|
||||||
|
st.hour = (short)trts.Hour;
|
||||||
|
st.minute = (short)trts.Minute;
|
||||||
|
st.second = (short)trts.Second;
|
||||||
|
st.milliseconds = (short)trts.Millisecond;
|
||||||
|
|
||||||
|
SetLocalTime(ref st);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Leap indicator field values
|
||||||
|
/// </summary>
|
||||||
|
public enum _LeapIndicator
|
||||||
|
{
|
||||||
|
NoWarning, // 0 - No warning
|
||||||
|
LastMinute61, // 1 - Last minute has 61 seconds
|
||||||
|
LastMinute59, // 2 - Last minute has 59 seconds
|
||||||
|
Alarm // 3 - Alarm condition (clock not synchronized)
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Mode field values
|
||||||
|
/// </summary>
|
||||||
|
public enum _Mode
|
||||||
|
{
|
||||||
|
SymmetricActive, // 1 - Symmetric active
|
||||||
|
SymmetricPassive, // 2 - Symmetric pasive
|
||||||
|
Client, // 3 - Client
|
||||||
|
Server, // 4 - Server
|
||||||
|
Broadcast, // 5 - Broadcast
|
||||||
|
Unknown // 0, 6, 7 - Reserved
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stratum field values
|
||||||
|
/// </summary>
|
||||||
|
public enum _Stratum
|
||||||
|
{
|
||||||
|
Unspecified, // 0 - unspecified or unavailable
|
||||||
|
PrimaryReference, // 1 - primary reference (e.g. radio-clock)
|
||||||
|
SecondaryReference, // 2-15 - secondary reference (via NTP or SNTP)
|
||||||
|
Reserved // 16-255 - reserved
|
||||||
|
}
|
||||||
|
}
|
|
@ -32,5 +32,5 @@ using System.Runtime.InteropServices;
|
||||||
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
|
// 可以指定所有值,也可以使用以下所示的 "*" 预置版本号和修订号
|
||||||
// 方法是按如下所示使用“*”: :
|
// 方法是按如下所示使用“*”: :
|
||||||
// [assembly: AssemblyVersion("1.0.*")]
|
// [assembly: AssemblyVersion("1.0.*")]
|
||||||
[assembly: AssemblyVersion("2.0.2012.1801")]
|
[assembly: AssemblyVersion("2.0.2108.1501")]
|
||||||
[assembly: AssemblyFileVersion("2.0.2012.1801")]
|
[assembly: AssemblyFileVersion("2.0.2108.1501")]
|
|
@ -44,9 +44,6 @@
|
||||||
<Reference Include="MyDb">
|
<Reference Include="MyDb">
|
||||||
<HintPath>..\..\..\Bin\Debug\MyTimeClock\MyDb.dll</HintPath>
|
<HintPath>..\..\..\Bin\Debug\MyTimeClock\MyDb.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="RyWeb">
|
|
||||||
<HintPath>..\..\..\Bin\Debug\MyTimeClock\RyWeb.dll</HintPath>
|
|
||||||
</Reference>
|
|
||||||
<Reference Include="System" />
|
<Reference Include="System" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
<Reference Include="System.Xml.Linq" />
|
<Reference Include="System.Xml.Linq" />
|
||||||
|
@ -65,6 +62,7 @@
|
||||||
<Compile Include="FrmConfirm.Designer.cs">
|
<Compile Include="FrmConfirm.Designer.cs">
|
||||||
<DependentUpon>FrmConfirm.cs</DependentUpon>
|
<DependentUpon>FrmConfirm.cs</DependentUpon>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="NTPClient.cs" />
|
||||||
<Compile Include="Program.cs" />
|
<Compile Include="Program.cs" />
|
||||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||||
<Compile Include="RyCode.cs" />
|
<Compile Include="RyCode.cs" />
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'Debug|AnyCPU'">
|
||||||
<StartArguments>mute_on</StartArguments>
|
<StartArguments>timesync</StartArguments>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
</Project>
|
</Project>
|
|
@ -1,76 +1,63 @@
|
||||||
using DotNet4.Utilities;
|
using DotNet4.Utilities;
|
||||||
using ryCommon;
|
using ryCommon;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Net;
|
using System.Net;
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace TimeClock.API
|
namespace TimeClock.API
|
||||||
{
|
{
|
||||||
public class TimeSync
|
public class TimeSync
|
||||||
{
|
{
|
||||||
[StructLayoutAttribute(LayoutKind.Sequential)]
|
[StructLayoutAttribute(LayoutKind.Sequential)]
|
||||||
public struct SystemTime
|
public struct SystemTime
|
||||||
{
|
{
|
||||||
public short year;
|
public short year;
|
||||||
public short month;
|
public short month;
|
||||||
public short dayOfWeek;
|
public short dayOfWeek;
|
||||||
public short day;
|
public short day;
|
||||||
public short hour;
|
public short hour;
|
||||||
public short minute;
|
public short minute;
|
||||||
public short second;
|
public short second;
|
||||||
public short milliseconds;
|
public short milliseconds;
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 设置系统时间
|
/// 设置系统时间
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="time"></param>
|
/// <param name="time"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
[DllImport("kernel32.dll")]
|
[DllImport("kernel32.dll")]
|
||||||
private static extern bool SetLocalTime(ref SystemTime time);
|
private static extern bool SetLocalTime(ref SystemTime time);
|
||||||
|
|
||||||
public static bool SetDate(DateTime dt)
|
public static bool SetDate(DateTime dt)
|
||||||
{
|
{
|
||||||
SystemTime systemtime;
|
SystemTime systemtime;
|
||||||
systemtime.year = (short)dt.Year;
|
systemtime.year = (short)dt.Year;
|
||||||
systemtime.month = (short)dt.Month;
|
systemtime.month = (short)dt.Month;
|
||||||
systemtime.dayOfWeek = (short)dt.DayOfWeek;
|
systemtime.dayOfWeek = (short)dt.DayOfWeek;
|
||||||
systemtime.day = (short)dt.Day;
|
systemtime.day = (short)dt.Day;
|
||||||
systemtime.hour = (short)dt.Hour;
|
systemtime.hour = (short)dt.Hour;
|
||||||
systemtime.minute = (short)dt.Minute;
|
systemtime.minute = (short)dt.Minute;
|
||||||
systemtime.second = (short)dt.Second;
|
systemtime.second = (short)dt.Second;
|
||||||
systemtime.milliseconds = (short)dt.Millisecond;
|
systemtime.milliseconds = (short)dt.Millisecond;
|
||||||
return SetLocalTime(ref systemtime);
|
return SetLocalTime(ref systemtime);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static DateTime ConvertIntDatetime(long utc)
|
public static DateTime ConvertIntDatetime(long utc)
|
||||||
{
|
{
|
||||||
return TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddMilliseconds((double)utc);
|
return TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)).AddMilliseconds((double)utc);
|
||||||
}
|
}
|
||||||
public static void Sync()
|
public static void Sync()
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
HttpHelper http = new HttpHelper();
|
string ntpserver = "ntp1.aliyun.com";
|
||||||
HttpItem item = new HttpItem()
|
RyLine.NTPClient client = new RyLine.NTPClient(ntpserver);
|
||||||
{
|
client.Connect(true); //参数为false时只从服务器获取信息,为true时同时自动更新本机时间
|
||||||
URL = "https://a.jd.com//ajax/queryServerData.html?r=" + Guid.NewGuid().ToString(),
|
}
|
||||||
Method = "get"
|
catch { }
|
||||||
};
|
}
|
||||||
HttpResult result = http.GetHtml(item);
|
}
|
||||||
if (result.StatusCode == HttpStatusCode.OK)
|
}
|
||||||
{
|
|
||||||
var utc = result.Html.GetStr("\"serverTime\":", "}").ToInt64();
|
|
||||||
if (utc == 0) { return; }
|
|
||||||
DateTime dt = ConvertIntDatetime(utc);
|
|
||||||
SetDate(dt);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
catch
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
|
@ -28,38 +28,33 @@
|
||||||
/// </summary>
|
/// </summary>
|
||||||
private void InitializeComponent()
|
private void InitializeComponent()
|
||||||
{
|
{
|
||||||
this.virtualObjectListView1 = new BrightIdeasSoftware.VirtualObjectListView();
|
this.virtualObjectListView1 = new BrightIdeasSoftware.VirtualObjectListView();
|
||||||
((System.ComponentModel.ISupportInitialize)(this.virtualObjectListView1)).BeginInit();
|
((System.ComponentModel.ISupportInitialize)(this.virtualObjectListView1)).BeginInit();
|
||||||
this.SuspendLayout();
|
this.SuspendLayout();
|
||||||
//
|
//
|
||||||
// virtualObjectListView1
|
// virtualObjectListView1
|
||||||
//
|
//
|
||||||
this.virtualObjectListView1.AlternateRowBackColor = System.Drawing.Color.Empty;
|
this.virtualObjectListView1.CellEditUseWholeCell = false;
|
||||||
this.virtualObjectListView1.AlwaysGroupByColumn = null;
|
this.virtualObjectListView1.HideSelection = false;
|
||||||
this.virtualObjectListView1.AlwaysGroupBySortOrder = System.Windows.Forms.SortOrder.None;
|
this.virtualObjectListView1.Location = new System.Drawing.Point(63, 47);
|
||||||
this.virtualObjectListView1.HighlightBackgroundColor = System.Drawing.Color.Empty;
|
this.virtualObjectListView1.Name = "virtualObjectListView1";
|
||||||
this.virtualObjectListView1.HighlightForegroundColor = System.Drawing.Color.Empty;
|
this.virtualObjectListView1.ShowGroups = false;
|
||||||
this.virtualObjectListView1.LastSortColumn = null;
|
this.virtualObjectListView1.Size = new System.Drawing.Size(111, 59);
|
||||||
this.virtualObjectListView1.LastSortOrder = System.Windows.Forms.SortOrder.None;
|
this.virtualObjectListView1.TabIndex = 0;
|
||||||
this.virtualObjectListView1.Location = new System.Drawing.Point(227, 134);
|
this.virtualObjectListView1.UseCompatibleStateImageBehavior = false;
|
||||||
this.virtualObjectListView1.Name = "virtualObjectListView1";
|
this.virtualObjectListView1.View = System.Windows.Forms.View.Details;
|
||||||
this.virtualObjectListView1.ShowGroups = false;
|
this.virtualObjectListView1.VirtualMode = true;
|
||||||
this.virtualObjectListView1.Size = new System.Drawing.Size(8, 8);
|
//
|
||||||
this.virtualObjectListView1.TabIndex = 0;
|
// frmQuickTime
|
||||||
this.virtualObjectListView1.UseCompatibleStateImageBehavior = false;
|
//
|
||||||
this.virtualObjectListView1.View = System.Windows.Forms.View.Details;
|
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
||||||
this.virtualObjectListView1.VirtualMode = true;
|
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||||
//
|
this.ClientSize = new System.Drawing.Size(364, 205);
|
||||||
// frmQuickTime
|
this.Controls.Add(this.virtualObjectListView1);
|
||||||
//
|
this.Name = "frmQuickTime";
|
||||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
|
((System.ComponentModel.ISupportInitialize)(this.virtualObjectListView1)).EndInit();
|
||||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
this.ResumeLayout(false);
|
||||||
this.ClientSize = new System.Drawing.Size(364, 205);
|
|
||||||
this.Controls.Add(this.virtualObjectListView1);
|
|
||||||
this.Name = "frmQuickTime";
|
|
||||||
((System.ComponentModel.ISupportInitialize)(this.virtualObjectListView1)).EndInit();
|
|
||||||
this.ResumeLayout(false);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
|
|
@ -1,120 +1,120 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<root>
|
<root>
|
||||||
<!--
|
<!--
|
||||||
Microsoft ResX Schema
|
Microsoft ResX Schema
|
||||||
|
|
||||||
Version 2.0
|
Version 2.0
|
||||||
|
|
||||||
The primary goals of this format is to allow a simple XML format
|
The primary goals of this format is to allow a simple XML format
|
||||||
that is mostly human readable. The generation and parsing of the
|
that is mostly human readable. The generation and parsing of the
|
||||||
various data types are done through the TypeConverter classes
|
various data types are done through the TypeConverter classes
|
||||||
associated with the data types.
|
associated with the data types.
|
||||||
|
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
... ado.net/XML headers & schema ...
|
... ado.net/XML headers & schema ...
|
||||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||||
<resheader name="version">2.0</resheader>
|
<resheader name="version">2.0</resheader>
|
||||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||||
<comment>This is a comment</comment>
|
<comment>This is a comment</comment>
|
||||||
</data>
|
</data>
|
||||||
|
|
||||||
There are any number of "resheader" rows that contain simple
|
There are any number of "resheader" rows that contain simple
|
||||||
name/value pairs.
|
name/value pairs.
|
||||||
|
|
||||||
Each data row contains a name, and value. The row also contains a
|
Each data row contains a name, and value. The row also contains a
|
||||||
type or mimetype. Type corresponds to a .NET class that support
|
type or mimetype. Type corresponds to a .NET class that support
|
||||||
text/value conversion through the TypeConverter architecture.
|
text/value conversion through the TypeConverter architecture.
|
||||||
Classes that don't support this are serialized and stored with the
|
Classes that don't support this are serialized and stored with the
|
||||||
mimetype set.
|
mimetype set.
|
||||||
|
|
||||||
The mimetype is used for serialized objects, and tells the
|
The mimetype is used for serialized objects, and tells the
|
||||||
ResXResourceReader how to depersist the object. This is currently not
|
ResXResourceReader how to depersist the object. This is currently not
|
||||||
extensible. For a given mimetype the value must be set accordingly:
|
extensible. For a given mimetype the value must be set accordingly:
|
||||||
|
|
||||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||||
that the ResXResourceWriter will generate, however the reader can
|
that the ResXResourceWriter will generate, however the reader can
|
||||||
read any of the formats listed below.
|
read any of the formats listed below.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.binary.base64
|
mimetype: application/x-microsoft.net.object.binary.base64
|
||||||
value : The object must be serialized with
|
value : The object must be serialized with
|
||||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.soap.base64
|
mimetype: application/x-microsoft.net.object.soap.base64
|
||||||
value : The object must be serialized with
|
value : The object must be serialized with
|
||||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
|
|
||||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||||
value : The object must be serialized into a byte array
|
value : The object must be serialized into a byte array
|
||||||
: using a System.ComponentModel.TypeConverter
|
: using a System.ComponentModel.TypeConverter
|
||||||
: and then encoded with base64 encoding.
|
: and then encoded with base64 encoding.
|
||||||
-->
|
-->
|
||||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||||
<xsd:element name="root" msdata:IsDataSet="true">
|
<xsd:element name="root" msdata:IsDataSet="true">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:choice maxOccurs="unbounded">
|
<xsd:choice maxOccurs="unbounded">
|
||||||
<xsd:element name="metadata">
|
<xsd:element name="metadata">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||||
<xsd:attribute name="type" type="xsd:string" />
|
<xsd:attribute name="type" type="xsd:string" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||||
<xsd:attribute ref="xml:space" />
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="assembly">
|
<xsd:element name="assembly">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:attribute name="alias" type="xsd:string" />
|
<xsd:attribute name="alias" type="xsd:string" />
|
||||||
<xsd:attribute name="name" type="xsd:string" />
|
<xsd:attribute name="name" type="xsd:string" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="data">
|
<xsd:element name="data">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||||
<xsd:attribute ref="xml:space" />
|
<xsd:attribute ref="xml:space" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
<xsd:element name="resheader">
|
<xsd:element name="resheader">
|
||||||
<xsd:complexType>
|
<xsd:complexType>
|
||||||
<xsd:sequence>
|
<xsd:sequence>
|
||||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||||
</xsd:sequence>
|
</xsd:sequence>
|
||||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:choice>
|
</xsd:choice>
|
||||||
</xsd:complexType>
|
</xsd:complexType>
|
||||||
</xsd:element>
|
</xsd:element>
|
||||||
</xsd:schema>
|
</xsd:schema>
|
||||||
<resheader name="resmimetype">
|
<resheader name="resmimetype">
|
||||||
<value>text/microsoft-resx</value>
|
<value>text/microsoft-resx</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="version">
|
<resheader name="version">
|
||||||
<value>2.0</value>
|
<value>2.0</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="reader">
|
<resheader name="reader">
|
||||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
<resheader name="writer">
|
<resheader name="writer">
|
||||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</resheader>
|
</resheader>
|
||||||
</root>
|
</root>
|
|
@ -12,7 +12,7 @@
|
||||||
<FileAlignment>512</FileAlignment>
|
<FileAlignment>512</FileAlignment>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<PlatformTarget>x86</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
<DebugType>full</DebugType>
|
<DebugType>full</DebugType>
|
||||||
<Optimize>false</Optimize>
|
<Optimize>false</Optimize>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user