/// <summary>
        /// 开始把队列消息写入文件
        /// </summary>
        private static void logStartWrite(Cre <T> cre)
        {
            if (isStart)
            {
                return;
            }
            isStart  = true;
            Thread t = new Thread(delegate()
            {
                while (true)
                {
                    if (SafetyWriteHelper <T> .logQueue.Count >= 1)
                    {
                        T m = null;
                        lock (myLock)
                            m = SafetyWriteHelper <T> .logQueue.Dequeue();
                        if (m == null)
                        {
                            continue;
                        }
                        cre(m);
                        //PanGuLuceneHelper.instance.CreateIndex(T);
                    }
                    else
                    {
                        isStart = false; //标记下次可执行
                        break;           //跳出循环
                    }
                }
            });

            t.Start();
        }
 /// <summary>
 /// 写入
 /// </summary>
 /// <param name="logmede"></param>
 public static void logWrite(T logmede, Cre <T> cre)
 {
     // 这里需要锁上 不然会出现:源数组长度不足。请检查 srcIndex 和长度以及数组的下限。异常
     //网上有资料说 http://blog.csdn.net/greatbody/article/details/26135057  不能多线程同时写入队列
     //其实  不仅仅 不能同时写入队列 也不能同时读和写如队列  所以  在Dequeue 取的时候也要锁定一个对象
     lock (myLock)
         logQueue.Enqueue(logmede);
     logStartWrite(cre);
 }
 /// <summary>
 /// 写入集合
 /// </summary>
 /// <param name="logmede"></param>
 public static void logWrite(List <T> logmede, Cre <T> cre)
 {
     lock (myLock)
     {
         foreach (var item in logmede)
         {
             logQueue.Enqueue(item);
         }
     }
     logStartWrite(cre);
 }
Beispiel #4
0
        private void timer1_Tick(object sender, EventArgs e)
        {
            MySqlConnection  cnn = new MySqlConnection("Server=localhost;DATABASE=food;Uid=admin;Password=123;");
            MySqlCommand     cmd = new MySqlCommand("Select Credit from compte WHERE UserN ='" + User + "'", cnn);
            MySqlDataAdapter da  = new MySqlDataAdapter(cmd);
            DataTable        dt  = new DataTable();

            da.Fill(dt);
            if (dt.Rows.Count == 1)
            {
                String Cred = dt.Rows[0]["Credit"].ToString();
                Cre = Cred;
            }
            lbl_Credit.Text = Cre.ToString();
        }