我試圖使用Timer
來觸發事件以通過網絡發送數據。我創建了一個簡單的類來調試。基本上我有一個List<string>
我想發送。我想下面的情況發生:重置System.Timers.Timer以防止Elapsed事件
- 添加字符串
List
- 開始
Timer
10秒 - 添加第二個字符串
List
前Timer.Elapsed
- 重啓
Timer
回到10秒。
到目前爲止,我有這樣的:
public static List<string> list;
public static Timer timer;
public static bool isWiredUp = false;
public static void Log(string value) {
if (list == null) list = new List<string>();
list.Add(value);
//this does not reset the timer, elapsed still happens 10s after #1
if (timer != null) {
timer = null;
}
timer = new Timer(10000);
timer.Start();
timer.Enabled = true;
timer.AutoReset = false;
if (!isWiredUp) {
timer.Elapsed += new ElapsedEventHandler(SendToServer);
isWiredUp = true;
}
}
static void SendToServer(object sender, ElapsedEventArgs e) {
timer.Enabled = false;
timer.Stop();
}
任何想法?
從這個問題我明白,他想積累列表中的數據,並且只有自上次添加到列表已經過去10秒後才發送一次。他希望避免SendToServer被兩次調用兩次,如果他將數據添加到列表兩次相隔三秒。我可能是錯的,但是我就是這麼讀的。 – 2013-02-13 19:17:24
@zespri這正是我閱讀它的方式。這正是這個代碼所做的。 – Servy 2013-02-13 19:20:02
即使使用計時器..這是一個壞主意..沒有鎖定,沒有同步的形式..計時器是這樣做絕對最糟糕的方式,他應該重新考慮他是如何解決這個問題的。 – 2013-02-13 19:21:51