none
C# İşlemleri sırayla yaptırma RRS feed

  • Soru

  • Öncelikle herkese kolay gelsin.

    Bir forumda 4 tane timer'ım var. 1. timer gelen değerleri sürekli check ediyor. 2. - 3. ve 4. timer ise gelen değerlere göre işlem yapıyorlar.  2 veya 3 label'a aynı anda değer geldiğinde önce label1 dekini sonra 2 en son 3.labeldaki işlemi yapması lâzım. 

    Fakat 3 ünü birden yapmaya çalışıyor. Eğer else if koyarsam 1. işlemi yaptığı için 2. ve 3. labellere geçmiyor. Nasıl bir yol izlemem gerekiyor. Araya Threading attığımda da olmuyor. Yazılımda çok iyi değilim sadece bildiğim kadarıyla yol almaya çalışıyorum. Biraz açıklayıcı hatta detaylı yazarak yardımcı olmanızı isteyeceğim kusuruma bakmayın lütfen. Yardımlarınız için teşekkürler. 

    timer1'in interval değeri 0.500 

    Misal: if (Birden fazla koşul var. ((Checkbox1.checked || Checkbox2.checked) && label1 > 0 && label5<0  )

    {

    Şu işlemi yap. ( Buradaki işlem yaklaşık 1-1.5 saniye sürüyor. Aynı süre diğer labellarda da geçerli.)

    }

    if (label2.text > 0)

    {

    Şu işlemi yap.

    }

    if (label3.text > 0)

    {

    Şu işlemi yap.

    }



    • Düzenleyen Reoranc3 5 Ekim 2019 Cumartesi 02:20
    4 Ekim 2019 Cuma 23:11

Tüm Yanıtlar

  • Deleted
    4 Ekim 2019 Cuma 23:37
  • Timer ile değilde event driven ile yapmamı söylüyorsunuz anladım. Önce event driveni çözmem lâzım ilk kez duyuyorum :) Teşekkürler. Bu event driven ile örnek olarak kullanabileceğim bir uygulama var mı elinizde acaba ?
    5 Ekim 2019 Cumartesi 00:00
  • Deleted
    5 Ekim 2019 Cumartesi 00:20
  • En kestirme yol en iyi bildiğin yol olunca mecbur timer'a yöneliyoruz. Öğrendiğimiz zaman event driven ile de iş yapacağız :)
    5 Ekim 2019 Cumartesi 00:56
  • Yalnız şöyle bir durum var. İf içerisinde birden fazla kriter arıyorum. Verdiğim örnek eksik olduğu için eventlere yönledirmeniz normal. Tabii söylediğiniz eventr driven'in başka methodları yoksa. Textchanged özelliğini kullanmam pek bir şey değiştirmiyor.
    5 Ekim 2019 Cumartesi 01:46
  • Deleted
    5 Ekim 2019 Cumartesi 02:45
  • 1. timer sürekli olarak değişen değerleri site üzerinden okumak için. Borsa takibi gibi düşünebilirsiniz.

    2. timer ise belirlediğim kriterlerin yerine getirilip getilmediğini kontrol edip belirlediğimiz değer kadar alma ya da satma işlemi yapacak.

    3. timer ve 4. timer da 2. timer ile aynı işlemi yapıyor fakat hepsi farklı bir textbox'a değer girip next diyecek.  Fakat 2-3 ve 4. timer aynı anda harekete geçtiklerinde sistem patlıyor.

    Site bana aynı anda sadece 1 işlem yaptırıyor.  O yüzden 2. timerın kriterleri tutuyorsa 3. ve 4. timerlar işlem yapmaması gerekiyor. O yüzden tıkanıp kalıyorum.

    5 Ekim 2019 Cumartesi 02:54
  • İşlem dizinizi queue'ye alabilirsiniz.

    Örneğin. 1. timer_tick kuyruğa bir işlem atar. 2. timer_tick kuyruktan bir işlem alır yapar. gibi.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    5 Ekim 2019 Cumartesi 05:42
    Moderatör
  • Forumlara bakıyorum. Zannımca bu dediğiniz ile olacak gibi. Teşekkürler. Duruma göre tekrar yazacağım.
    5 Ekim 2019 Cumartesi 10:52
  • İşlem dizinizi queue'ye alabilirsiniz.

    Örneğin. 1. timer_tick kuyruğa bir işlem atar. 2. timer_tick kuyruktan bir işlem alır yapar. gibi.


    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

    Bu olayda da olmuyor. Çünkü sizin söylediğiniz olayda bir sıralama var. Benim istediğim şöyle. Bazen 2. 3. ve 4. timer aynı anda çalışır. Bazen sadece 3 ve 4 bazen 2 ve 4. Yani if içerisindeki şartlar ne zaman sağlanırsa o zaman işlem yapacak. 2. ve3.  timer sağlamıyorsa sadece 4. timer devreye girecek.
    5 Ekim 2019 Cumartesi 19:17
  • EventINotifyPropertyChanged sınıfı iş görür mü? Örneğin ad soyad ve ünvan içeriğinden herhangi biri değişince label'a anlık olarak hepsini yazdırmak gibi? (bkz detay)

    ya da istediğin şey t1, t2, t3 şeklinde sıralı yapayım ama etli etliye sütlü sütlüye karışmasın diyorsan Task + Task.ContinueWith kullanabilirsin.

    Yukarıda da söylendiği gibi timer doğru bir yaklaşım değil.


    TR| Sorunuzun yanıtı bu ise "Yanıt Olarak Öner" olarak işaretleyin, eğer faydalı bir yorum ise "Oy Ver"erek forumun işleyişine katkıda bulunabilirsiniz. EN| If this is the answer to your problem, mark "Propose as Answer" and if it is helpful, you can contribute to the workig of the forum by "Voting".

    5 Ekim 2019 Cumartesi 22:15
  • Cevabınız için teşekkürler. Söylediklerinize bakıyorum. Umarım bu sefer işimi görür.

    Muhakkak timer'lar doğru bir yaklaşım değildir fakat eksiklerimi gidermeye çalışıyorum hâlâ tam olarak oturtabilmiş değilim şuanlık böyle devam.

    6 Ekim 2019 Pazar 00:56