/// <summary>
        /// 写入数据
        /// </summary>
        /// <typeparam name="T"></typeparam>
        /// <param name="Value"></param>
        /// <param name="Start"></param>
        public void Write <T>(T Value, int Start)
        {
            WriteInvoke wi = new WriteInvoke(Value, Start, typeof(T));

            if (this.clearMostCode && write.Count >= clearMaxCount)
            {
                write.Clear();
            }
            write.Enqueue(wi);
        }
        /// <summary>
        /// 写入数据
        /// </summary>
        /// <param name="Value"></param>
        public void Write <T>(List <T> Value, Dictionary <string, string> Parm)
        {
            List <object> tmpValue = new List <object>();

            for (int i = 0; i < Value.Count; i++)
            {
                tmpValue.Add((object)(Value[i]));
            }
            WriteInvoke wi = new WriteInvoke(tmpValue, Parm, typeof(T));

            if (this.clearMostCode && write.Count >= clearMaxCount)
            {
                write.Clear();
            }
            write.Enqueue(wi);
        }
        /// <summary>
        /// 写入数据
        /// </summary>
        /// <typeparam name="T">数据类型</typeparam>
        /// <param name="Value">写入值</param>
        /// <param name="Start">写入起点</param>
        /// <param name="Len">写入长度</param>
        public void Write <T>(List <T> Value, int Start, int End)
        {
            List <object> tmpValue = new List <object>();

            for (int i = 0; i < Value.Count; i++)
            {
                tmpValue.Add((object)(Value[i]));
            }
            WriteInvoke wi = new WriteInvoke(tmpValue, Start, End, typeof(T));

            if (this.clearMostCode && write.Count >= clearMaxCount)
            {
                write.Clear();
            }
            write.Enqueue(wi);
        }
 /// <summary>
 /// 将异步传输过来的数据写入操作,在多线程中一个一个的同步执行
 /// </summary>
 public void WriteOneByOne()
 {
     while (write.Count > 0)
     {
         if (write.Count > 40)
         {
             All.Class.Error.Add(new string[] { "写入模块", "队列长度" }, new string[] { this.Text, write.Count.ToString() });
             All.Class.Error.Add("当前队列过长,影响写入实时性,请检查程序");
         }
         WriteInvoke wi = write.Dequeue();
         if (wi == null)
         {
             return;
         }
         if (wi.OtherValue != null)
         {
             if (wi.OtherValue.T.ToString() == typeof(bool).ToString())
             {
                 List <bool> tmpValue = new List <bool>();
                 for (int i = 0; i < wi.OtherValue.Value.Count; i++)
                 {
                     tmpValue.Add((bool)wi.OtherValue.Value[i]);
                 }
                 if (!WriteInternal <bool>(tmpValue, wi.OtherValue.Parm))
                 {
                     if (!WriteInternal <bool>(tmpValue, wi.OtherValue.Parm))
                     {
                         if (!WriteInternal <bool>(tmpValue, wi.OtherValue.Parm))
                         {
                             All.Class.Log.Add <bool>(tmpValue, wi.OtherValue.Parm);
                         }
                     }
                 }
             }
             if (wi.OtherValue.T.ToString() == typeof(string).ToString())
             {
                 List <string> tmpValue = new List <string>();
                 for (int i = 0; i < wi.OtherValue.Value.Count; i++)
                 {
                     tmpValue.Add((string)wi.OtherValue.Value[i]);
                 }
                 if (!WriteInternal <string>(tmpValue, wi.OtherValue.Parm))
                 {
                     if (!WriteInternal <string>(tmpValue, wi.OtherValue.Parm))
                     {
                         if (!WriteInternal <string>(tmpValue, wi.OtherValue.Parm))
                         {
                             All.Class.Log.Add <string>(tmpValue, wi.OtherValue.Parm);
                         }
                     }
                 }
             }
             if (wi.OtherValue.T.ToString() == typeof(byte).ToString())
             {
                 List <byte> tmpValue = new List <byte>();
                 for (int i = 0; i < wi.OtherValue.Value.Count; i++)
                 {
                     tmpValue.Add((byte)wi.OtherValue.Value[i]);
                 }
                 if (!WriteInternal <byte>(tmpValue, wi.OtherValue.Parm))
                 {
                     if (!WriteInternal <byte>(tmpValue, wi.OtherValue.Parm))
                     {
                         if (!WriteInternal <byte>(tmpValue, wi.OtherValue.Parm))
                         {
                             All.Class.Log.Add <byte>(tmpValue, wi.OtherValue.Parm);
                         }
                     }
                 }
             }
             if (wi.OtherValue.T.ToString() == typeof(float).ToString())
             {
                 List <float> tmpValue = new List <float>();
                 for (int i = 0; i < wi.OtherValue.Value.Count; i++)
                 {
                     tmpValue.Add((float)wi.OtherValue.Value[i]);
                 }
                 if (!WriteInternal <float>(tmpValue, wi.OtherValue.Parm))
                 {
                     if (!WriteInternal <float>(tmpValue, wi.OtherValue.Parm))
                     {
                         if (!WriteInternal <float>(tmpValue, wi.OtherValue.Parm))
                         {
                             All.Class.Log.Add <float>(tmpValue, wi.OtherValue.Parm);
                         }
                     }
                 }
             }
             if (wi.OtherValue.T.ToString() == typeof(double).ToString())
             {
                 List <double> tmpValue = new List <double>();
                 for (int i = 0; i < wi.OtherValue.Value.Count; i++)
                 {
                     tmpValue.Add((double)wi.OtherValue.Value[i]);
                 }
                 if (!WriteInternal <double>(tmpValue, wi.OtherValue.Parm))
                 {
                     if (!WriteInternal <double>(tmpValue, wi.OtherValue.Parm))
                     {
                         if (!WriteInternal <double>(tmpValue, wi.OtherValue.Parm))
                         {
                             All.Class.Log.Add <double>(tmpValue, wi.OtherValue.Parm);
                         }
                     }
                 }
             }
             if (wi.OtherValue.T.ToString() == typeof(int).ToString())
             {
                 List <int> tmpValue = new List <int>();
                 for (int i = 0; i < wi.OtherValue.Value.Count; i++)
                 {
                     tmpValue.Add((int)wi.OtherValue.Value[i]);
                 }
                 if (!WriteInternal <int>(tmpValue, wi.OtherValue.Parm))
                 {
                     if (!WriteInternal <int>(tmpValue, wi.OtherValue.Parm))
                     {
                         if (!WriteInternal <int>(tmpValue, wi.OtherValue.Parm))
                         {
                             All.Class.Log.Add <int>(tmpValue, wi.OtherValue.Parm);
                         }
                     }
                 }
             }
             if (wi.OtherValue.T.ToString() == typeof(ushort).ToString())
             {
                 List <ushort> tmpValue = new List <ushort>();
                 for (int i = 0; i < wi.OtherValue.Value.Count; i++)
                 {
                     tmpValue.Add((ushort)wi.OtherValue.Value[i]);
                 }
                 if (!WriteInternal <ushort>(tmpValue, wi.OtherValue.Parm))
                 {
                     if (!WriteInternal <ushort>(tmpValue, wi.OtherValue.Parm))
                     {
                         if (!WriteInternal <ushort>(tmpValue, wi.OtherValue.Parm))
                         {
                             All.Class.Log.Add <ushort>(tmpValue, wi.OtherValue.Parm);
                         }
                     }
                 }
             }
         }
         if (wi.ListValue != null)
         {
             if (wi.ListValue.T.ToString() == typeof(bool).ToString())
             {
                 List <bool> tmpValue = new List <bool>();
                 for (int i = 0; i < wi.ListValue.Value.Count; i++)
                 {
                     tmpValue.Add((bool)wi.ListValue.Value[i]);
                 }
                 if (!WriteInternal <bool>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                 {
                     if (!WriteInternal <bool>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                     {
                         if (!WriteInternal <bool>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                         {
                             All.Class.Log.Add <bool>(tmpValue, wi.ListValue.Start, wi.ListValue.End);
                         }
                     }
                 }
             }
             if (wi.ListValue.T.ToString() == typeof(string).ToString())
             {
                 List <string> tmpValue = new List <string>();
                 for (int i = 0; i < wi.ListValue.Value.Count; i++)
                 {
                     tmpValue.Add((string)wi.ListValue.Value[i]);
                 }
                 if (!WriteInternal <string>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                 {
                     if (!WriteInternal <string>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                     {
                         if (!WriteInternal <string>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                         {
                             All.Class.Log.Add <string>(tmpValue, wi.ListValue.Start, wi.ListValue.End);
                         }
                     }
                 }
             }
             if (wi.ListValue.T.ToString() == typeof(byte).ToString())
             {
                 List <byte> tmpValue = new List <byte>();
                 for (int i = 0; i < wi.ListValue.Value.Count; i++)
                 {
                     tmpValue.Add((byte)wi.ListValue.Value[i]);
                 }
                 if (!WriteInternal <byte>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                 {
                     if (!WriteInternal <byte>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                     {
                         if (!WriteInternal <byte>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                         {
                             All.Class.Log.Add <byte>(tmpValue, wi.ListValue.Start, wi.ListValue.End);
                         }
                     }
                 }
             }
             if (wi.ListValue.T.ToString() == typeof(float).ToString())
             {
                 List <float> tmpValue = new List <float>();
                 for (int i = 0; i < wi.ListValue.Value.Count; i++)
                 {
                     tmpValue.Add((float)wi.ListValue.Value[i]);
                 }
                 if (!WriteInternal <float>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                 {
                     if (!WriteInternal <float>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                     {
                         if (!WriteInternal <float>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                         {
                             All.Class.Log.Add <float>(tmpValue, wi.ListValue.Start, wi.ListValue.End);
                         }
                     }
                 }
             }
             if (wi.ListValue.T.ToString() == typeof(double).ToString())
             {
                 List <double> tmpValue = new List <double>();
                 for (int i = 0; i < wi.ListValue.Value.Count; i++)
                 {
                     tmpValue.Add((double)wi.ListValue.Value[i]);
                 }
                 if (!WriteInternal <double>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                 {
                     if (!WriteInternal <double>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                     {
                         if (!WriteInternal <double>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                         {
                             All.Class.Log.Add <double>(tmpValue, wi.ListValue.Start, wi.ListValue.End);
                         }
                     }
                 }
             }
             if (wi.ListValue.T.ToString() == typeof(int).ToString())
             {
                 List <int> tmpValue = new List <int>();
                 for (int i = 0; i < wi.ListValue.Value.Count; i++)
                 {
                     tmpValue.Add((int)wi.ListValue.Value[i]);
                 }
                 if (!WriteInternal <int>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                 {
                     if (!WriteInternal <int>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                     {
                         if (!WriteInternal <int>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                         {
                             All.Class.Log.Add <int>(tmpValue, wi.ListValue.Start, wi.ListValue.End);
                         }
                     }
                 }
             }
             if (wi.ListValue.T.ToString() == typeof(ushort).ToString())
             {
                 List <ushort> tmpValue = new List <ushort>();
                 for (int i = 0; i < wi.ListValue.Value.Count; i++)
                 {
                     tmpValue.Add((ushort)wi.ListValue.Value[i]);
                 }
                 if (!WriteInternal <ushort>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                 {
                     if (!WriteInternal <ushort>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                     {
                         if (!WriteInternal <ushort>(tmpValue, wi.ListValue.Start, wi.ListValue.End))
                         {
                             All.Class.Log.Add <ushort>(tmpValue, wi.ListValue.Start, wi.ListValue.End);
                         }
                     }
                 }
             }
         }
         if (wi.PointValue != null)
         {
             if (wi.PointValue.T.ToString() == typeof(bool).ToString())
             {
                 if (!WriteInternal <bool>((bool)wi.PointValue.Value, wi.PointValue.Start))
                 {
                     if (!WriteInternal <bool>((bool)wi.PointValue.Value, wi.PointValue.Start))
                     {
                         All.Class.Log.Add <bool>((bool)wi.PointValue.Value, wi.PointValue.Start);
                     }
                 }
             }
             if (wi.PointValue.T.ToString() == typeof(string).ToString())
             {
                 if (!WriteInternal <string>((string)wi.PointValue.Value, wi.PointValue.Start))
                 {
                     if (!WriteInternal <string>((string)wi.PointValue.Value, wi.PointValue.Start))
                     {
                         if (!WriteInternal <string>((string)wi.PointValue.Value, wi.PointValue.Start))
                         {
                             All.Class.Log.Add <string>((string)wi.PointValue.Value, wi.PointValue.Start);
                         }
                     }
                 }
             }
             if (wi.PointValue.T.ToString() == typeof(byte).ToString())
             {
                 if (!WriteInternal <byte>((byte)wi.PointValue.Value, wi.PointValue.Start))
                 {
                     if (!WriteInternal <byte>((byte)wi.PointValue.Value, wi.PointValue.Start))
                     {
                         if (!WriteInternal <byte>((byte)wi.PointValue.Value, wi.PointValue.Start))
                         {
                             All.Class.Log.Add <byte>((byte)wi.PointValue.Value, wi.PointValue.Start);
                         }
                     }
                 }
             }
             if (wi.PointValue.T.ToString() == typeof(float).ToString())
             {
                 if (!WriteInternal <float>((float)wi.PointValue.Value, wi.PointValue.Start))
                 {
                     if (!WriteInternal <float>((float)wi.PointValue.Value, wi.PointValue.Start))
                     {
                         if (!WriteInternal <float>((float)wi.PointValue.Value, wi.PointValue.Start))
                         {
                             All.Class.Log.Add <float>((float)wi.PointValue.Value, wi.PointValue.Start);
                         }
                     }
                 }
             }
             if (wi.PointValue.T.ToString() == typeof(double).ToString())
             {
                 if (!WriteInternal <double>((double)wi.PointValue.Value, wi.PointValue.Start))
                 {
                     if (!WriteInternal <double>((double)wi.PointValue.Value, wi.PointValue.Start))
                     {
                         if (!WriteInternal <double>((double)wi.PointValue.Value, wi.PointValue.Start))
                         {
                             All.Class.Log.Add <double>((double)wi.PointValue.Value, wi.PointValue.Start);
                         }
                     }
                 }
             }
             if (wi.PointValue.T.ToString() == typeof(int).ToString())
             {
                 if (!WriteInternal <int>((int)wi.PointValue.Value, wi.PointValue.Start))
                 {
                     if (!WriteInternal <int>((int)wi.PointValue.Value, wi.PointValue.Start))
                     {
                         if (!WriteInternal <int>((int)wi.PointValue.Value, wi.PointValue.Start))
                         {
                             All.Class.Log.Add <int>((int)wi.PointValue.Value, wi.PointValue.Start);
                         }
                     }
                 }
             }
             if (wi.PointValue.T.ToString() == typeof(ushort).ToString())
             {
                 if (!WriteInternal <ushort>((ushort)wi.PointValue.Value, wi.PointValue.Start))
                 {
                     if (!WriteInternal <ushort>((ushort)wi.PointValue.Value, wi.PointValue.Start))
                     {
                         if (!WriteInternal <ushort>((ushort)wi.PointValue.Value, wi.PointValue.Start))
                         {
                             All.Class.Log.Add <ushort>((ushort)wi.PointValue.Value, wi.PointValue.Start);
                         }
                     }
                 }
             }
         }
         System.Threading.Thread.Sleep(10);
     }
 }