Я использую настраиваемое клиентское соединение для 10 TCP-клиентов.
bool _flagScanner1Connect = true;
private xyzTranmissionProtocol xyz1TranmissionProtocol = null;
private static readonly object LockWhileConnectingForScanner1 = new object();
internal ICustomClient Scanner1Conn;
System.Threading.Timer _tmrCheck1ClientConn;
public void Start1ScannerConn()
{
try
{
_tmrCheck1ClientConn = new System.Threading.Timer(Check1ScannerConn, null, TimeSpan.FromSeconds(0), TimeSpan.FromSeconds(5));
}
catch (Exception )
{
}
}
private void Check1ScannerConn(object state)
{
if (!_flagScanner1Connect)
return;
lock (LockWhileConnectingForScanner1)
{
if (Scanner1Conn == null || Scanner1Conn.CommunicationState == ClientCommunicationStates.Disconnected)
{
try
{
_tmrCheck1ClientConn.Change(Timeout.Infinite, Timeout.Infinite);
Scanner1Conn = CustomClientFactory.CreateClient(new CustomClientTcpEndPoint(“Scanner IpAdress”, “Scanner Port Number”));
Scanner1Conn.Connected += Scanner1Conn_Connected; ;
Scanner1Conn.Disconnected += Scanner1Conn_Disconnected;
Scanner1Conn.MessageReceived += Scanner1Conn_MessageReceived;
xyz1TranmissionProtocol = new xyzTranmissionProtocol();
Scanner1Conn.TransmissionProtocol = xyz1TranmissionProtocol;
.Connect();
//SEND A PING MESSAGE
_tmrCheck1ClientConn.Change(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5));
}
catch (Exception )
{
if (_flagScanner1Connect)
try
{
Scanner1Conn?.Disconnect();
}
catch { }
try
{
Scanner1Conn?.Dispose();
}
catch { }
try
{
Scanner1Conn = null;
}
catch { }
}
finally
{
_tmrCheckClientConn.Change(TimeSpan.FromSeconds(5), TimeSpan.FromSeconds(5));
}
}
}
}
Я написал 10 различных функций для 10 сканеров штрих-кода. если я использую 3 или менее 3, мое приложение будет работать. но если я использую более 3 сканеров, то сообщения, восстановленные сообщениями, не запускаются. и приложение станет очень медленным.
Может кто-нибудь помочь мне решить эту проблему.