在事件上创建倒数计时器

vma*_*k99 0 .net c# c#-4.0

我想在每次if声明时创建一个新的倒数计时器true,它应该像这样工作:

例如:

List<int> intList = new List<int>();



foreach(a in b)
{
   if(a==1)
   {
     intList.Add(a.somevalue)
     //should create a new countdown timer for 1 hour and once the time is finished, it
     should remove the added value from the list
   }
}
Run Code Online (Sandbox Code Playgroud)

我如何实现这一目标?

谢谢.

Ser*_*rvy 5

好吧,首先,我们真的不应该List从不同的线程修改一个,所以这使我们处于确保所有定时事件通过单个线程,或应用自己的某种类型的同步,或者我们使用不同的数据结构,从多个线程使用没有问题.

至于在一小时内实际做某事,虽然你可以使用a Timer,但Task.Delay在这里很合适:

List<int> list = new List<int>();
object key = new object();

foreach (int a in b)
    if (a == 1)
    {
        var value = GetValue(a);
        list.Add(value);
        Task.Delay(TimeSpan.FromHours(1))
            .ContinueWith(t => { lock (key)list.Remove(value); });
    }
Run Code Online (Sandbox Code Playgroud)