Adlandırılmış borular aracılığıyla bir gui uygulamasıyla iletişim kuran bir windows hizmetim var. Bu yüzden ben bir kez yapmak eğer ince çalışıyor bağlamak için app için bekleyen çalışan bir iş parçacığı var. Ancak iş parçacığı, adlandırılmış yöneltme sunucusunun yeni bir örneğini oluşturuyorsa, zaten kurulmuş olan bağlantı bozulur ve tüm örneklerin meşgul özel durumunu alırım. özel durum kod parçası şudur: yeni boru sunucu akışı NamedPipeServerStream ps = new NamedPipeServerStream("mytestp")
ikinci kez oluştururkenAdlandırılmış boru oluşturma işleminde tüm örnekler meşgul istisnası
class PipeStreamWriter : TextWriter
{
static NamedPipeServerStream _output = null;
static StreamWriter _writer = null;
static Thread myThread = null;
public PipeStreamWriter()
{
if (myThread == null)
{
ThreadStart newThread = new ThreadStart(delegate{WaitForPipeClient();});
myThread = new Thread(newThread);
myThread.Start();
}
}
public static void WaitForPipeClient()
{
Thread.Sleep(25000);
while (true)
{
NamedPipeServerStream ps = new NamedPipeServerStream("mytestp");
ps.WaitForConnection();
_output = ps;
_writer = new StreamWriter(_output);
}
}
durum atılır.
DÜZENLEME:
Yanıt bulundu ve sunucu örneklerinin maksimum sayısı bu varsayılan değeri -1 gibi görünüyor NamedPipeServerStream ps = new NamedPipeServerStream("mytestp",PipeDirection.Out,10);
belirtildiğinde çalışır. Bu başka bir şeye yol açar ama bu önemli bir soru değil: Birisi neden 1 olduğunu ve 1 gibi değil, 1 olduğu zaman 1 olduğunu biliyor? yani maxNumberOfServerInstances
değişkene varsayılan atamak NamedPipeServerStream
yapıcı iki aşırı yükler vardır
[burada] (https://msdn.microsoft.com/en-us/library/bb355760 (v = vs.110) .aspx # ANCHOR_2) Varsayılan değer, Yine çözüm 1'dir Ediyor Benim de problemimi çözdü, şerefe! Bir cevap olarak göndermeyi düşünürdüm, benden bir oy almış olurdum. –
Sadece "-1" ile ilgili .Net koduna baktım: win32, 1-254 veya 255'in sabit değerlerinin, sistem tarafından izin verilen maksimum değeri ifade etmesine izin veriyor. MaxAllowedServerInstances sabiti üzerinden 255'i -1 (sınırsız) olarak gösteriyoruz. Bu, örn. sonsuz zaman aşımı olarak -1 ile – derape