Yazar |
|
tarikkranda
Kayıt: 07.01.2006 |
|
Selam Özkan,
Process sınıfı eventlerini kullanabilirsin,
http://msdn.microsoft.com/en-us/library/system.diagnostics.process_events.aspx
Hata alınması ve çıkış durumlarını yakalayıp loglayabilirsin.
|
|
Yazar |
|
orhan
istanbul
admin
Kayıt: 17.11.2005 |
|
iki uygulama da sana ait ise messaging queue kullanarak iki uygulamanin birbiri ile konuşmasını sağlayabilrsin. yalnız bu 3. bir ek yazılımın makinaya kurulması ile olur.
N/A
|
|
Yazar |
|
akgulozkan
istanbul
Kayıt: 12.12.2006 |
|
tarikkranda yazdi | Selam Özkan,
Process sınıfı eventlerini kullanabilirsin,
http://msdn.microsoft.com/en-us/library/system.diagnostics.process_events.aspx
Hata alınması ve çıkış durumlarını yakalayıp loglayabilirsin. |
teşk, hocam, burada 4 event var. Bunlardan exited event ı kullanabilirm fakat ne zaman exit olacağını da benim belirlemem lazım.. Kısaca olay şu, bir wpf app. (çok önceden sizin önerdiğiniz, hala aynı proje) var, bu uygulama başka bir uygulamayı çağırıyor, çağrılan ikinci uygulamaya istediğim parametreyi gönderip istediğim işlemi yapmasını sağlıyorum. Yapmak istediğim şey ise çağrılan uygulamanın işini bitirdiğini anlayıp, (belki bu anlamda outputDataRecieved event ı kullanılabilir) uygulamayı kapatmak. Yani uygulamayı ben kapatıcam fakat işinin bitip bitmediğini anlamam gerekiyor. Process class ile ilgili bir takım properities içerisinde var mı diye baktım denedim bulamadım.. Ayrıca ana thread i sleep ile bekletmek istemiyorum, zira program kilitlenmiş gibi oluyor. Ana process işine devam etsin , bu işler ise çağırdığım process in içinde bulunduğu thread tarafından yürütülsün. Sıkıntım bu, zira process yönetmi pek bilmiyorum ve thread'leri etkin kullanamıyorum...
orhan yazdi | iki uygulama da sana ait ise messaging queue kullanarak iki uygulamanin birbiri ile konuşmasını sağlayabilrsin. yalnız bu 3. bir ek yazılımın makinaya kurulması ile olur. |
orhan admin çağırdığım uygulama bana ait değil.
|
|
Yazar |
|
akgulozkan
istanbul
Kayıt: 12.12.2006 |
|
clairvoyant yazdi | İki process (ya da thread) arasında okuma/yazma işlemi yapmak için bir pipe tanımlanır. Bunu bir dosyaya okuma/yazma işlemi gibi düşünebilirsin. Ana thread 'fgets' gibi bir metod ile pipe stream üzerinden child thread'ten bir veri bekleyebilir (klavyeden giriş bekleyen bir konsol uygulaması gibi). Child thread pipe akışına veri yazana kadar ana thread bekleme modundadır. Genellikle yazılan verinin sonuna CRLF eklenerek (Enter tuşuna basılmış gibi) yazma işleminin tamamlandığı akışa bildirilir. Ana thread ise CRLF gördüğünde okuma işleminin bittiğine karar verir ve kaldığı yerden işleme devam eder. Burada CRLF ayracı yerine kendi belirlediğin bir protokol de kullanabilirsin; bunun için ise 'fgets' gibi hazır bir fonksiyon yerine while içinde byte byte veri alan bir metod tanımlarsın. Fakat satır satır iletişim daha kolay olur bence.
Pipe mantığı aşağı yukarı bu şekilde (client-server mantığına benzer) ama kullandığın platformda nasıl uygulanır bilmiyorum. Bu kadar uğraşmanı gerektirmeyecek kadar pratik kütüphaneler de mevcut olabilir. |
eyw dostum. Thread lerin genel işleyişi hakkında az çok bilgim var. Sorunum şu ki ana thread'in beklemesini istemiyorum. Zira bu bekleme süresini belirlemek pek rasyonel görünmüyor (pc den pc ye işlem süresi değişebiliyor) Ayrıca uygulamanın kısa bir süre de olsa cevap vermiyor modunda olmasını istemiyorum. Senin de bahsettiğin gibi sorun kullandığım platformda nasıl olur ve thread'ler arası iletişim nasıl yapılabilir.
|
|
Yazar |
|
clairvoyant
Antalya
Kayıt: 05.05.2006 |
|
Söz konusu program işlem bittiğinde sonlanmıyor anlaşılan; peki işlem bittiğinde bir çıktı üretiyor mu? External bir programın belirli bir fonksiyonunun yapıp yapmadığını (özel bir yöntem belirtilmemişse) yalnızca onun çıkış birimlerinden öğrenebilirsin. Onu çağırdığın ana program sadece process durumunu falan bilebilir. External program işlem sonunda kendini sonlandırmıyorsa ya da state değiştirmiyorsa ana programın istediği işin bitip bitmediğini öğrenebileceğini sanmıyorum. Ama kullandığın programın da ne iş yaptığını bilmediğim için boş konuşuyor da olabilirim.
Sleep modunda bekletmek işini görüyorsa fakat programın beklemesini istemiyorsan şunu da deneyebilirsin; yazdığın programda kendi kodlarını çalıştıran child threadler oluşturabiliyorsan, söz konusu programı yönetmesi için bir thread tanımlayabilirsin. Alt program ile ilgili işleri oluşturduğun threade devredersin. Ana program yerine child thread sleep modunda beklemiş olur. İşlem bittiğinde child thread söz konusu programı terminate ettikten sonra kendini sonlandırır. Fakat burada yine ana programın işlem ile ilgili bilgilenmesini istiyorsan child thread ile iletişimini sağlaman gerekir.
Let`s make this world a better place to live !
|
|
Yazar |
|
akgulozkan
istanbul
Kayıt: 12.12.2006 |
|
clairvoyant yazdi | Söz konusu program işlem bittiğinde sonlanmıyor anlaşılan; peki işlem bittiğinde bir çıktı üretiyor mu? External bir programın belirli bir fonksiyonunun yapıp yapmadığını (özel bir yöntem belirtilmemişse) yalnızca onun çıkış birimlerinden öğrenebilirsin. Onu çağırdığın ana program sadece process durumunu falan bilebilir. External program işlem sonunda kendini sonlandırmıyorsa ya da state değiştirmiyorsa ana programın istediği işin bitip bitmediğini öğrenebileceğini sanmıyorum. Ama kullandığın programın da ne iş yaptığını bilmediğim için boş konuşuyor da olabilirim.
Sleep modunda bekletmek işini görüyorsa fakat programın beklemesini istemiyorsan şunu da deneyebilirsin; yazdığın programda kendi kodlarını çalıştıran child threadler oluşturabiliyorsan, söz konusu programı yönetmesi için bir thread tanımlayabilirsin. Alt program ile ilgili işleri oluşturduğun threade devredersin. Ana program yerine child thread sleep modunda beklemiş olur. İşlem bittiğinde child thread söz konusu programı terminate ettikten sonra kendini sonlandırır. Fakat burada yine ana programın işlem ile ilgili bilgilenmesini istiyorsan child thread ile iletişimini sağlaman gerekir. |
dostum aslında senin yaklaşımın en doğrusu. Ama ben kendimce geçici bir çözüm ürettim. process.responding özelliği ile uygulamanın yanıt verip vermediğini kontrol ediyorum. Eğer uygulama iddle ise yani yanıt verebilir durumda boşta ise işini bitirmiştir diyip kapatıyorum. Almam gereken veri zaten dosya sisteminde tutulmuş oluyor. O veriyi de oradan alıyorum. Yani anlık çözüm diyelim Bahsettiğiniz şeyleri inceledim de o yapıyı uygulamaya entegre etmek sanırım vaktimi alır.. şimdilik hepinize teşekkürler..
|
|
|
|
-
Del.icio.us
-
Digg
-
Facebook
-
Furl
-
Google
-
Blink
-
Simpy
-
Spurl
-
Y! MyWeb
|
|
| | |