Я хочу список, который будет содержать элемент в течение определенного времени.
Это то, что я попытался сейчас:Элемент в списке существует в течение ограниченного времени
private void digtimer_Tick(object sender, EventArgs e) //Goes off every half a second
{
justmine.Clear();
}
Однако этот способ удаляет все элементы после каждого интервала, независимо от того, как долго существовали элементы в списке. Есть ли способ, чтобы после того, как элемент списка существует в течение определенного времени, он удаляется?
EDIT: Этот список является целым числом. Самый новый код:
` //public static Dictionary<int, DateTime> justmine = new Dictionary<int, DateTime>();
//Adding an item is: justmine.Add(userid, DateTime.Now);
private void digtimer_Tick(object sender, EventArgs e)
{
foreach (KeyValuePair<int, DateTime> pair in justmine)
{
console.Items.Add((DateTime.Now - pair.Value).TotalSeconds).ToString();
string x = ((DateTime.Now - pair.Value).TotalSeconds).ToString();
if ((Convert.ToDouble(x) < 500.0))
{
justmine.Remove(pair.Key);
}
}
}
`
Возможно, это сработало, но я не могу редактировать словарь во время работы тика. EXTRA Примечание Этот список теперь словарь с
public static Dictionary<int, DateTime> justmine = new Dictionary<int, DateTime>();
Вы можете хранить предметы, как 'кортежи ", а затем разрешить доступ к элементам, которые не« истекли »(другими словами, вам необязательно * удалить * элементы из списка). –
crashmstr
И одна потенциальная проблема с действительно * удалением * элементов - это то, что происходит, если вы делаете 'foreach' над списком и элементы удаляются? (ответ: ничего хорошего не получается) – crashmstr
Перед тем, как сделать foreach, вы должны скопировать список и перебрать копию. – mdebeus