2009-05-27 11 views
15

NZB dosyalarını kullanarak ikili dosyaları karşıdan yükleyen bir (C#) programı oluşturuyorum, ancak uygulamanızın herhangi bir anda çalışmasının bir örneği olabilir.C#: Nasıl - yeni parametreleri kabul eden tek örnek uygulama?

Bir kullanıcı bir .nzb dosyasını çift tıklattığında ve programım çalışmıyorsa, başlatmalı ve işlemelidir (kolay, dosya kaydı). Şimdi programım zaten çalışıyorsa, ikinci bir örneği başlatmak istemiyorum - Belirtilen dosyanın belirtilen dosyayı almasını istiyorum.

Uygulamamın tek örneğini yapmak .IsSingleInstance hilesiyle Visual Basic DLL kullanarak yapılabilir, ancak oraya gitmek istemiyorum.

Uygulamamın tek örnekli, olmasını sağlamak için bir mutex kullanmak doğru bir yol gibi görünüyor, ancak şimdi belirtilen parametreyi (.nzb dosyası) zaten çalışan örneğe iletme konusunda takılıyorum.

Yardım memnuniyetle karşılanacaktır! :-)

+0

Muhtemelen bunun farkındasınız, ancak çarkı uygulamanızla yeniden keşfediyor olabilirsiniz. http://sourceforge.net/projects/sabnzbd/ bir örneğidir – dss539

+1

Yup, ve sayısız diğerleri var ;-) Sadece parmaklarımı C# ile esnetmek için bir hobi projesi ve eğer sonucu beğenirsem dünya başka bir ücretsiz NZB-downloader ile sona erecek! :-) – Led

+2

Neden Microsoft.VisualBasic.dll dosyasında SingleInstanceController kullanmak istemiyorsunuz? Bu çerçeve içinde herkes gibi bir meclis var. Sadece isim VisualBasic olduğu için kullanılmayacaktır. Microsoft, Microsoft.Foo.dll herkes onu kullanacaktı! – Oliver

cevap

2

Bunu deneyin: Ana programınız adlandırılmış bir boru veya başka bir süreçler arası iletişim tesisi oluşturur ve dinler. Bir NZB dosyasıyla parametre olarak çalıştırıldığında, boruyu açar, dosya bilgisini içine kaydeder ve çıkar. Ana programınız yeni dosyayı işler ve indirir.

0

Neden dosyayı bir sıraya ekleyen bir programa sahip değilsiniz ve daha sonra çalışmıyorsa, karşıdan yükleme programını başlatıyor. Bu indirme programı, sadece indirme dosya adlarını eklediğiniz bir dosya olan kuyruğu izler. Genghis proje

0

Bak Çalışmak için WriteLine(). Bunu bulmak için biraz zaman harcadım.

0

kullanın, ben bir writer.Flush eklemek zorunda böyle "güzel uygulanmasını" kullanma .net remoting

0

gibi bir IPC (arası işlem iletişim) mekanizması() sonra en InitialInstanceActivator de

İlgili konular