سؤال

أرغب في تشغيل مؤقت لكل 5 ساعات وحذف الملفات من المجلد الأكبر من 4 أيام. هل يمكنك من فضلك مع نموذج الرمز؟

هل كانت مفيدة؟

المحلول

لأنه لم يتم ذكره ، أوصي باستخدام أ System.Threading.Timer لشيء مثل هذا. إليك مثال على التنفيذ:

System.Threading.Timer DeleteFileTimer = null;

private void CreateStartTimer()
{
    TimeSpan InitialInterval = new TimeSpan(0,0,5);
    TimeSpan RegularInterval = new TimeSpan(5,0,0);

    DeleteFileTimer = new System.Threading.Timer(QueryDeleteFiles, null, 
            InitialInterval, RegularInterval);

}

private void QueryDeleteFiles(object state)
{
    //Delete Files Here... (Fires Every Five Hours).
    //Warning: Don't update any UI elements from here without Invoke()ing
    System.Diagnostics.Debug.WriteLine("Deleting Files...");
}

private void StopDestroyTimer()
{
    DeleteFileTimer.Change(System.Threading.Timeout.Infinite,
    System.Threading.Timeout.Infinite);

    DeleteFileTimer.Dispose();
}

وبهذه الطريقة ، يمكنك تشغيل رمز حذف الملف في خدمة Windows مع الحد الأدنى من المتاعب.

نصائح أخرى

DateTime CutOffDate = DateTime.Now.AddDays(-4)
DirectoryInfo di = new DirectoryInfo(folderPath);
FileInfo[] fi = di.GetFiles();

for (int i = 0; i < fi.Length; i++)
{
    if (fi[i].LastWriteTime < CutOffDate)
    {
        File.Delete(fi[i].FullName);
    }
}

يمكنك استبدال LastWriteTime خاصية لشيء آخر ، هذا فقط ما أستخدمه عند إزالة ذاكرة التخزين المؤقت للصورة في تطبيق ما لدي.

تعديل:

على الرغم من أن هذا لا يشمل الجزء الموقت ... سأسمح لك بتعرف هذا الجزء بنفسك. يجب أن يوضح لك القليل من googling عدة طرق للقيام بذلك في جدول زمني.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top