2012-10-15 26 views
5

Adlandırılmış borular için nasıl denetleyebilirim? FileSystemWatcher, \\\\.\pipes izleyemiyor. FSW'ye, adlandırılmış borular için kullanılabilecek benzer bir şey var mı? Şu anda herhangi bir yeni adlandırılmış boru oluşturma için anket yok, ama bu biraz etkisiz görünüyor.C dilinde adlandırılmış yöneltmeler için izleme C#

Boruların oluşturulmasıyla ilgilenmek istiyorum. Oluşturulan boruların listesi, boru zaten oluşturulduğunda iyidir. Programımın birkaç örneğini açacağım ve her açıldığında, adlandırılmadan otomatik olarak adlandırılmış borular kullanarak ankete bağlanabilmek istiyorum. Böyle bir mekanizma yok gibi görünüyor.

cevap

2

Adlandırılmış bir boruyu her seferinde izleyemezsiniz, ancak başka şeyleri bekleyebilirsiniz. Benim buna çözümüm bir etkinlik oluşturmak ve daha sonra bunu beklemek. Sunucu programı kendi borusunu oluşturduğunda, olayı da işaret eder. İstemciye sinyal verildiğinde, olayı kapatın ve boruyu açın.

Borunun kapandığına dair bir gösterge aldığınızda ve tekrar izlemeniz gerektiğinde, olayı yeniden açın ve bekleyin.

Birden çok borunuz varsa, her bir boru için ayrı bir olaya sahip olmak isteyebilirsiniz (EventForPipe-*pipename*) veya tüm borular için kullanılan bir olaya sahip olmak isteyebilirsiniz ve yalnızca olay bildirildiğinde her bir boruyu kontrol edebilirsiniz. .

Bu, yerel bir boru için çalışır, ancak uzak bir olay için çalışmaz, çünkü uzak bir etkinlikte sinyal vermenin veya beklemenin bir yolu yoktur. Başka bir bilgisayardaki bir boruyu izlemek zorunda kalırsanız, borunun bulunduğu bilgisayarın da sinyal vermek için kullanılabilecek bir paylaşımlı dizini olabilir. Paylaşılan bir dizin dosya değişiklikleri için izlenebilir olduğundan, boru oluşturulduğunda bir dosya oluşturabilirsiniz. Uzak bir sunucu tüm uzak dosya bildirim isteklerini karşılayamayacağı için bu stratejinin çalışması için düzenli aralıklarla (belki de dakikada bir kez) yok etmeniz gerektiğini unutmayın.

+0

güzel yaklaşım +1. – danihp

İlgili konular