none
Thread komutu kullanımı hakkında RRS feed

  • Soru

  • arkadaşlar merhaba,

    yazmış olduğum programda comporta bağlı yazıcı ile haberleşme yapıyorum ve yazıcının durumuna göre gerekli komutları yolluyorum eğer yazıcı hata kodu yolluyor ise yazdırma işlemlerini iptal ediyorum. Program buraya kadar düzgün çalışıyor.

    (yazıcım zebra105SL ve comport ile haberleşiyorum.)

    ben programda şöyle bir yol izledim.

    yazıcı_kontrol isimli bir adet void oluşturdum burada yazıcı ile haberleşme komutlarını yolluyorum. serialport nesnesinin datarecieved olayından bana cevap geliyor ve bende duruma göre devam ediyorum

    sıralama şu şekilde

    yazıcı_kontrol

    thread.sleep(1500)

    yazdır

    işlemlerin akış şekli bu şekilde. benim sormak istediğim olay şu  bu kullanmış olduğum thread komutu bütün programımı durduruyor yoksa kullanmış olduğum void içindemi geçerli sadece.

    eğer bütün programı durduruyor ise bunu sadece komutu kullanmış olduğum void 'in işlemlerini durdurmasını nasıl sağlarım.

    umarım olayı anlatabilmişimdir.

     cevaplar için şimdiden teşekkür ederim. iyi çalışmalar dilerim.

    20 Aralık 2012 Perşembe 13:34

Yanıtlar

  • Kullandigim void de ne demek:)

    private void ...

    diye bir metodu kastediyorsun herhalde. O baska bir yerde degil ki, ayni thread. O metodun icinde durman demek onunla ayni olan thread'in tamaminin durmasi demek (Thread.CurrentThread aktif thread).

    ASync ve Task Parallel Library'yi incele.  

    20 Aralık 2012 Perşembe 15:20
    Yanıtlayıcı

Tüm Yanıtlar

  • Kullandigim void de ne demek:)

    private void ...

    diye bir metodu kastediyorsun herhalde. O baska bir yerde degil ki, ayni thread. O metodun icinde durman demek onunla ayni olan thread'in tamaminin durmasi demek (Thread.CurrentThread aktif thread).

    ASync ve Task Parallel Library'yi incele.  

    20 Aralık 2012 Perşembe 15:20
    Yanıtlayıcı
  • bahsetmiş olduğum olay public void. şöyle izah etmeye çalışayım.

    public void topla ()

    {

    thread.sleep(1500);

    a=a+1;

    }

    public void kontrol ()

    {

    if (a<100)

    {z=z+2; }

    }

     yukarıdaki gibi 2 adet public void ben topla ve kontrol  işlemlerini sürekli olarak çağırdığımı düşünün, topla işlemindeki

    thread.sleep(1500);

    komutu kontrol işleminide etkilermi yoksa sadece topla işleminimi durdurur onu soruyorum.

    21 Aralık 2012 Cuma 06:12
  • Çetin hocam cevap vermiş aslında... Hangi prosedür/yordam/metot/kod bloğu -adına ne dersen de- olursa olsun, sen ayırmadıkça hepsi aynı thread'de çalışır. Doğal olarak bunlardan herhangi birinin içindeki thread.sleep sadece o blokta değil, tüm thread için/yani tüm uygulaman için etkili olur. Test edebilirsin. İki tane timer kontrolü ekle. İntervalleri birbirinden farklı olsun, biri diğerinin iki katı gibi. Birinde thread.sleep kullan. Ama uzun süreli bir bekletme olsun. Bak bakalım sonuca, iki timer ayrı ayrı çalışıyor mu? Thread.sleep süresince bekliyor mu?


    21 Aralık 2012 Cuma 08:04
    Moderatör