我試圖添加標籤ID(RFID)到列表框中,然後在30秒後將其刪除。做這個的最好方式是什麼?將項目添加到列表框,然後在30秒後刪除
txtTagID.Text = s1.Replace(" ", "").ToLower();
if (lstTagsHold.Items.Contains(txtTagID.Text) == false)
{
lstTagsHold.Items.Add(txtTagID.Text);
}
我試圖添加標籤ID(RFID)到列表框中,然後在30秒後將其刪除。做這個的最好方式是什麼?將項目添加到列表框,然後在30秒後刪除
txtTagID.Text = s1.Replace(" ", "").ToLower();
if (lstTagsHold.Items.Contains(txtTagID.Text) == false)
{
lstTagsHold.Items.Add(txtTagID.Text);
}
放下你的窗體上的System.Windows.Forms.Timer和時間間隔設置爲第二大約1(或更少依賴按要求的準確度)。聲明ExpiringItem類來存儲條目添加的時間。在您的timer_click事件中檢查已過期的項目並刪除。
class ExpiringItem
{
private string text;
public ExpiringItem(string text)
{
this.text = text;
this.Added = DateTime.Now;
}
public DateTime Added { get; private set; }
public override string ToString()
{
return text;
}
}
private void timer1_Tick(object sender, EventArgs e)
{
for (int i = listBox1.Items.Count -1; i > -1; i--)
{
var exp = (ExpiringItem)listBox1.Items[i];
var timeVisible = DateTime.Now - exp.Added;
if (timeVisible.TotalSeconds > 30)
listBox1.Items.RemoveAt(i);
}
}
要將項目添加到您的列表框
lstTagsHold.Items.Add(new ExpiringItem(txtTagID.Text));
嘗試使用定時器控制(如果您正在使用的WinForms)
我使用的WinForms做,但有可能是在不同時間的多個條目。我只想刪除已經存在30秒的條目 –
// Declare the timer
private static System.Timers.Timer objTimer = new System.Timers.Timer(30000);
// Attach the event handler
objTimer.Elapsed += OnTimedElapsed;
private static void OnTimedElapsed(Object source, System.Timers.ElapsedEventArgs e)
{
lstTagsHold.Items.Remove(txtTagID.Text);
}
'System.Timers.Timer'使用工作線程,因此它可能不是線程安全的,因此可能不會在線程中執行'lstTagsHold.Items.Remove(txtTagID.Text)'。回電話。 _「[基於服務器的System.Timers.Timer類設計用於多線程環境中的工作線程](https://msdn.microsoft.com/en-us/library/system.timers.timer(v = vs.110).aspx)「_ – MickyD
工作100%非常感謝 –
對不起,最後一個問題?如果VAR exp爲空,我該如何處理? –