Forum

c# Mutex-Thread Yar...
 
Bildirimler
Hepsini Temizle

c# Mutex-Thread Yardım

4 Yazılar
3 Üyeler
0 Reactions
737 Görüntüleme
(@servetcayir)
Gönderiler: 26
Eminent Member
Konu başlatıcı
 

Arkadaşlar

 

c# da bir uygulama geliştirdim. Parametre olarak da user bilgisini alıyor. Gelen bu parametre ile A tablosundan veri okuyup B tablosuna insert işlemi yapılıyor. A tablosundan ilgili kayıt siliniyor.

 Sorunum şu ki,

Ben "my.exe" SERVET şeklinde exe cagırdıgımda  A tablosundan user=SERVET olan kayıtlar alınıyor. Ve B tablosuna yazılmaya çalışılıyor.Bu yazma işlemi bitmeden yine "my.exe" SERVET şeklinde (aynı parametre ile) exe yi cagırdıgımda A tablosundaki kayıtlar halen durdugu icin yine bu kayıtlar alınıyor ve B tablosuna yazmaya calışıyor. Boylece her iki işlemin sonucunda da B tablosuna kayıtlar yazılmış dolayısıyla kayıtlar cift atılmış oluyor.

 Araştırdıgımda Mutex nesnesi işime yarayabilir görünüyor. Ancak burda ki sorun da farklı kullanıcılar icin (yaklaşık 30 kullanıcı) aynı anda sadece bir exe nin calışmasına izin verdiginden diger 29 kullanıcının beklemesi gerekiyor. Buna gerek yok.

Ben bir kullanıcının aynı anda sadece bir defa exe yi calıştırabilmesini nasıl sağlayabilirim? Mumkun mudur?

 

Bilgilendirirseniz cok sevinirim. 

 

 
Gönderildi : 17/01/2015 16:31

(@eravse)
Gönderiler: 1753
Üye
 

 Mutex bu isi sizin adiniza asagidaki gibi yapabilir 

static void Main()

  {

     string mutex_id = "MY_APP";

     using (Mutex mutex = new Mutex(false, mutex_id))

     {

        if (!mutex.WaitOne(0, false))

        {

           MessageBox.Show("Instance Already Running!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);

           return;

        }

        // Do stuff

     }

  } 

ProfectSoft Yazılım ve Danışmanlık Hizmetleri
LogPusher & Bifyou E-Commerce System
www.profectsoft.com

 
Gönderildi : 17/01/2015 19:31

(@halitmahmut)
Gönderiler: 231
Reputable Member
 

tam olarak ne için kullanacaksınız programı istemci sunucu programı kullanarak login işlemi yaptırtma ve sunucuda log tutma gibi bir konu mu ? yukarıda 

 Bu yazma işlemi bitmeden yine "my.exe" SERVET şeklinde (aynı parametre ile) exe yi cagırdıgımda A tablosundaki kayıtlar halen durdugu icin yine bu kayıtlar alınıyor ve B tablosuna yazmaya calışıyor. 

demişsiniz neden işlem bitmeden 2.ci işlemi başlatıyorsunuz ve bu işlem ne kadar uzun sürüyorki o anda direkt 2.ci işlemi başlatabiliyorsunuz 

 
Gönderildi : 17/01/2015 20:11

(@servetcayir)
Gönderiler: 26
Eminent Member
Konu başlatıcı
 

1-)Mutex işimi görmüyor cunku ben aynı anda farklı kullanıcıların programı calıştırabilmesini istiyorum.

 

Halit Hocam,

Program aldıgı parametreleri bir web servise gonderiyor. Burada istemci-sunucu durumu var.Web servis kendi icinde okuma-yazma işlemini yapıyor.

Bu exe başka bir program tarafından cagrılıyor(ERP programı icinden). Bu ERP yi de birden fazla kullanıcı kullanıyor doğal olarak.

 @ neden işlem bitmeden 2.ci işlemi başlatıyorsunuz ve bu işlem ne kadar uzun sürüyorki o anda direkt 2.ci işlemi başlatabiliyorsunuz

Bu işlemi kullanıcı yapıyor. ERP icinde bir kaydet butonu var. Bu buton her tıklanmasında benim exe mi cagırıyor.Exe de aldıgı parametreleri web servis e gonderiyor. Aslında ERP de kaydet butonu bir kere tıklandıktan sonra buton pasif yapılsa işim görülecek ancak ERP programının kaynak kodları elimizde bulunmuyor. Satın aldıgımız firmadan da bunu yapmalarını istesek hem uzun zaman alır hem de ucret talep edebilirler.

Her işlem yaklaşık 10 saniye sürüyor.Kullanıcı da bu zaman zarfında butonu 2.kez kullanıp programı tekrar cagırabiliyor. Bunu da testlerde gördük zaten.

İlginiz icin de cok teşekür ederim. 

 

 
Gönderildi : 18/01/2015 15:21

Paylaş: