قتل العملية بعد وقت معين + ج#
سؤال
كيف يمكنني قتل عملية بعد أن أقول 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. دع المؤقت علامة على فاصل زمني وأداء الإجراء المطلوب على فترات زمنية معينة.
بالطبع يمكنك استخدام التحكم في المؤقت مع تطبيق وحدة التحكم أيضًا.