4

我现在正在实施我的学术项目软件,使用命名管道技术通过网络连接异构系统。我使用了 .net framework 4 和 C# 语言。问题是如果服务器未准备好或不可用,客户端程序将无法继续。客户端命名管道不断尝试连接到服务器命名管道,直到可用连接。

如果服务器连接在 3 秒内不可用(可能是任何持续时间),我希望客户端程序能够继续其他功能。像这样的场景:当客户端程序启动时,它会尝试连接到服务器。如果服务器不可用,客户端将停止尝试连接服务器并自行离线运行。

我的问题的一些代码片段......

pipeClient.Connect(); <-- this is the problem point,
frmUserprofile.show(); <-- until the connection is available, the program will not execute this line

我想得到的解决方案......

pipeClient.Connect()
if (3 seconds is over && server connection is unavailable) <-- this is what I need    
{  pipeClient stops try to connect;  }

frmUserprofile.show(); 

有人可以帮我给我一些实用的解决方案...顺便说一句,我希望如果你能用C#语言解决这个问题,请用C#给出答案,但不一定提前谢谢...

4

3 回答 3

5

如果您使用的是NamedPipeClientStream类,则有Connect(int)方法重载,它接受超时值:

bool isConnected = false;
try
{
    pipeClient.Connect(3000);
    isConnected = true;
}
catch(TimeoutException)
{
    // failed to connect
}
于 2012-08-02T03:43:23.490 回答
0

如果您将 NamedPipeClientStream 用于您的任务,则有 Connect(Int32) 方法需要超时

http://msdn.microsoft.com/en-us/library/bb355337.aspx

于 2012-08-02T03:43:44.000 回答
0

使用NamedPipeClientStream. 它有一个连接超时。

请参阅NamedPipeClientStream.Connect

于 2012-08-02T03:44:36.217 回答