/// <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); }
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(); }