Tôi có dịch vụ cửa sổ liên lạc với ứng dụng gui qua các đường ống có tên. Do đó, tôi có một chuỗi đang chạy chờ ứng dụng kết nối đang chạy tốt nếu tôi thực hiện một lần. Nhưng nếu thread là tạo ra một trường hợp mới của máy chủ dòng ống được đặt tên, kết nối đã được thiết lập bị hỏng và tôi nhận được tất cả các trường hợp ngoại lệ bận. Đoạn mã nơi ngoại lệ được ném là:Tất cả các trường hợp ngoại lệ bận trên việc tạo ống có tên
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);
}
}
Trường hợp ngoại lệ được tạo khi tạo luồng máy chủ ống mới NamedPipeServerStream ps = new NamedPipeServerStream("mytestp")
lần thứ hai.
EDIT:
Tôi tìm thấy câu trả lời và nó hoạt động khi số lượng tối đa các trường hợp máy chủ được quy định NamedPipeServerStream ps = new NamedPipeServerStream("mytestp",PipeDirection.Out,10);
Giá trị mặc định cho điều này có vẻ là -1. Dẫn đến câu hỏi khác nhưng không phải là câu hỏi quan trọng: Ai đó biết tại sao nó là -1 và không 1 khi nó hoạt động như beeing 1?
Nói [tại đây] (https://msdn.microsoft.com/en-us/library/bb355760 (v = vs.110) .aspx # Anchor_2) giá trị mặc định là 1. Tuy nhiên, giải pháp của bạn cũng đã giải quyết được vấn đề của tôi, chúc mừng! Tôi sẽ xem xét việc gửi nó như là một câu trả lời, tôi sẽ nhận được một phiếu bầu từ tôi. –
Tôi chỉ có một cái nhìn vào mã .Net liên quan đến "-1" nó nói: win32 cho phép giá trị cố định 1-254 hoặc 255 để có nghĩa là tối đa cho phép bởi hệ thống. Chúng tôi phơi bày 255 là -1 (không giới hạn) thông qua hằng số MaxAllowedServerInstances. Điều này nhất quán, ví dụ: với -1 là thời gian chờ vô hạn, v.v. – derape