سؤال

كيف يمكنني قتل عملية بعد أن أقول 2 أو ثلاث دقائق انظر إلى الكود التالي:

 class Program
{
    static void Main(string[] args)
    {

        try
        {
            //declare new process and name it p1
            Process p1 = Process.Start("iexplore", "http://www.google.com");
            //get starting time of process
            DateTime startingTime = p1.StartTime;
            Console.WriteLine(startingTime);
            //add a minute to startingTime
            DateTime endTime = startingTime.AddMinutes(1); 
            //I don't know how to kill process after certain time
            //code below don't work, How Do I kill this process after a minute or 2
            p1.Kill(startingTime.AddMinutes(2));                
            Console.ReadLine();


        }
        catch (Exception ex)
        {

            Console.WriteLine("Problem with Process:{0}", ex.Message);
        }



    }
}

لذلك أريد أن تغلق نافذة IE بعد دقيقتين

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

المحلول

يستخدم Process.WaitForExit مع مهلة دقيقتين ، ثم اتصل Process.Kill إذا WaitForExit عاد false.

(قد تفكر أيضًا في الاتصال CloseMainWindow بدلاً من Kill, اعتمادًا على وضعك - أو على الأقل جربه أولاً ، لإعطاء العملية فرصة أكبر لإغلاق منظم.)

نصائح أخرى

استخدم System.Threading.Timer وقم بتزويد timercallback (الذي يحتوي على العملية. كيل) ليتم استدعاؤه مرة أخرى بعد دقيقتين. نرى المثال هنا

//p1.Kill(startingTime.AddMinutes(2));
using (var timer = new Timer(delegate { p1.Kill(); }, null, 2000, Timeout.Infinite))
{ 
  Console.ReadLine();  // do whatever
}

تحرير: حل جون أبسط .. أنواع أقل .. لا يوجد التخلص من reqd.

يجب أن تجرب مع خدمة Windows بدلاً من تطبيق وحدة التحكم. تعمل خدمات Windows على دورة حياة تكرارية بحيث يمكن تحقيق ذلك بسهولة باستخدام عنصر تحكم مؤقت في خدمة Windows. دع المؤقت علامة على فاصل زمني وأداء الإجراء المطلوب على فترات زمنية معينة.

بالطبع يمكنك استخدام التحكم في المؤقت مع تطبيق وحدة التحكم أيضًا.

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