C# 如何创建一个检查日期时间并在经过时间后执行操作的流程?

C# 如何创建一个检查日期时间并在经过时间后执行操作的流程?,c#,.net,C#,.net,在我的dll中,我正在序列化一个需要过期的对象,并在x天之后重新生成。 我如何做到这一点,而不需要调用应用程序每天重新启动(以便在我的dll中启动日期时间检查) 使用.NET3.5 private void updatePersistableItems() { if (!File.Exists(Items_FILENAME) && PersistableItems != null) //create new {

在我的dll中,我正在序列化一个需要过期的对象,并在x天之后重新生成。 我如何做到这一点,而不需要调用应用程序每天重新启动(以便在我的dll中启动日期时间检查)

使用.NET3.5

    private void updatePersistableItems()
    {
        if (!File.Exists(Items_FILENAME) && PersistableItems != null) //create new
        {
            _serializer.SerializeObject<PersistableObject>(Items_FILENAME, PersistableItems);
        }
        else //check if expired and replace, or update if not expired
        {
            PersistableObject ItemsFromStorage = new PersistableObject();

            ItemsFromStorage = _serializer.DeSerializeObject<PersistableObject>(Items_FILENAME);

            TimeSpan ts = DateTime.Now - ItemsFromStorage.DateItemsInitialized;
            if (ts.TotalDays < this.DaysToPersistItems) //use stored Items
                Items = ItemsFromStorage.Items;
        }
    }
private void updatePersistableItems()
{
如果(!File.Exists(Items\u FILENAME)&&PersistableItems!=null)//创建新的
{
_serializer.serializer对象(Items\u文件名,PersistableItems);
}
否则//检查是否过期并更换,如果未过期则更新
{
PersistableObject ItemsFromStorage=新的PersistableObject();
ItemsFromStorage=\u serializer.DeSerializeObject(Items\u文件名);
TimeSpan ts=DateTime.Now-ItemsFromStorage.DateItemsInitialized;
if(ts.TotalDays
使用计时器定期调用执行检查的函数:

您可以使用while循环启动新线程。一旦在应用程序启动时执行,线程就可以检查内容到期前的剩余时间,并在剩余时间内进入睡眠状态。一旦在睡眠后醒来,刷新内容,计算剩余睡眠时间量……)

听起来像是任务调度器的作业,它可以是。使用此选项,即使应用程序不是一直在运行,也可以安排运行更新。

序列化对象的用途是什么?当你使用它时,你能检查一下它是否新鲜吗?向我们展示你的代码,你尝试了什么?为什么你反对每天启动一次应用程序。这听起来正是正确的解决方案。@Servy我无法控制呼叫application@YuvalItzchakov添加了代码,但它只工作一次,当我初始化需要保持程序全天候运行的object时,当它在99.99%的时间里什么也不做时。@Servy调用的应用程序应该是全天候运行的,所以这个解决方案实际上可能可以工作,谢谢你,我确实试过了,但发现计时器间隔的最大值为Int32毫秒。我需要它跑得更长。(即90天,即7776000000毫秒)您不必每次计时器停止时都运行您的函数,您只需检查是否应该运行它(例如,与上次运行的日期时间比较等),然后执行该操作或再次启动计时器即可。