Timer Kontrolüyle İlgili Bir Sorum Var.
-
private void timerClose15_Tick(object sender, EventArgs e)
{
killProcesses();
timerClose15.Enabled = false;yukarıdaki komutla bi tane uygulamayı timer süresi dolunca kapatıyorum. ama program bazen saçmalıyor ve erken kapatıyor. bunun sebebi ne olabilir ? bunu nasıl düzeltebilirim ?
-
killProcess ne kadar uzun suruyor ve timer ne kadar surede tetikleniyor bilmiyorum ama bu durumda timer kapanmadan once birden fazla tetiklenme sansi var gibi gorunuyor. O yuzden once timer i durdurup sonra kill process metodunu cagirsan daha iyi olur...
sacmalamadan kastin nedir hocam? cok genel bir tabir kullanmissin. Belki dedigim seyle alakali olabilir belki baska nedeni olabilir.
-
unbalanced bunu yazdı
killProcess ne kadar uzun suruyor ve timer ne kadar surede tetikleniyor bilmiyorum ama bu durumda timer kapanmadan once birden fazla tetiklenme sansi var gibi gorunuyor. O yuzden once timer i durdurup sonra kill process metodunu cagirsan daha iyi olur...
sacmalamadan kastin nedir hocam? cok genel bir tabir kullanmissin. Belki dedigim seyle alakali olabilir belki baska nedeni olabilir.
7 tane timer var hepsi birbirinden farklı saniyelerde kill yapıyor. (saniyeler 150 ile 300 saniye arasında )
saçmalıyordan kastım. x uygulamayı 10 kere açtım 8 kere düzgün kapatıyor yani saniye tam dolunca kapanıyor. 2 kere erken kapatıyor.
-
Hocam selam. Parameterized Thread kullanabilirsiniz. Isiniz daha kolay olur gibime geliyor.
Ufak bir uygulama yaptim ve aciklamalarini yazdim.
using System; using System.Threading; namespace ParameterizedThreadOrnegi { class Program { //Burada kac tane thread calistirma istiyorsunuz onu secin const int THREADS_COUNT = 5; //Burada THREADS_COUNT kadar counter tutup hepsinin suresini veriyorum public static volatile int[] threadCounters = new int[THREADS_COUNT] { 10, 10, 10, 10, 10 }; //Tum threadlari baslatan fonksiyon private static void StartThreads() { for(int i = 0;i < THREADS_COUNT;i++) { //Burada ThreadWork sinifimizdaki static run metodunu cagiriyoruz Thread aThread = new Thread(ThreadWork.Run); aThread.Start(i); } } static void Main(string[] args) { //threadler baslatiliyor StartThreads(); //Burada tum conuterlar sifirlanmissa //stop = true oluyor ve main sonlaniyor bool stop = false; while (!stop) { stop=true; for (int i = 0; i < THREADS_COUNT; i++) { if (threadCounters[i] > 0) { stop = false; continue; } } } Console.ReadLine(); } } //Her calisan threadi barindiran class yapimiz class ThreadWork { //position olarak gelen parametre threadCounters icindeki //threadin yerini belirliyor public static void Run(object position) { while(Program.threadCounters[(int)position] > 0) { Console.Write("{0}", position); Program.threadCounters[(int)position]--; } } } }
-
Tamam teşekkür edeirm. dediklerinizi denicem.