-> Hier kostenlos registrieren
Help! (Ich weiß nicht Deutsch)
Problem libnodave Multithreading, einzufrieren.
Problem libnodave Multithreading, einzufrieren.
Code:
[COLOR=#0000FF]class[/COLOR] Program
{
[COLOR=#0000FF]public[/COLOR] [COLOR=#0000FF]static[/COLOR] [COLOR=#0000FF]int[/COLOR] Main([COLOR=#0000FF]string[/COLOR][COLOR=#008080][][/COLOR] args)
{
BBB c1 = [COLOR=#0000FF]new[/COLOR] BBB();
BBB c2 = [COLOR=#0000FF]new[/COLOR] BBB();
BBB c3 = [COLOR=#0000FF]new[/COLOR] BBB();
BBB c4 = [COLOR=#0000FF]new[/COLOR] BBB();
BBB c5 = [COLOR=#0000FF]new[/COLOR] BBB();
Parallel.Invoke(c1.W, c2.W, c3.W, c4.W, c5.W);
Console.ReadKey();
[COLOR=#0000FF]return[/COLOR] [COLOR=#00008B]0[/COLOR];
}
[COLOR=#0000FF]class[/COLOR] BBB
{
libnodave.daveOSserialType fds;
libnodave.daveInterface di;
libnodave.daveConnection Connect;
[COLOR=#0000FF]private[/COLOR] [COLOR=#0000FF]Object[/COLOR] thisLock = [COLOR=#0000FF]new[/COLOR] [COLOR=#0000FF]Object[/COLOR]();
[COLOR=#0000FF]public[/COLOR] BBB()
{
Console.WriteLine([COLOR=#800000]"Сокет {0}"[/COLOR], Task.CurrentId);
fds.rfd = libnodave.openSocket([COLOR=#00008B]102[/COLOR], [COLOR=#800000]"192.168.4.115"[/COLOR]);
fds.wfd = fds.rfd;
[COLOR=#0000FF]if[/COLOR] (fds.rfd > [COLOR=#00008B]0[/COLOR])
{
di = [COLOR=#0000FF]new[/COLOR] libnodave.daveInterface(fds, [COLOR=#800000]"IF1"[/COLOR], [COLOR=#00008B]0[/COLOR], libnodave.daveProtoISOTCP, libnodave.daveSpeed187k);
di.setTimeout([COLOR=#00008B]1000[/COLOR]);
Connect = [COLOR=#0000FF]new[/COLOR] libnodave.daveConnection(di, [COLOR=#00008B]0[/COLOR], [COLOR=#00008B]0[/COLOR], [COLOR=#00008B]2[/COLOR]);
Connect.connectPLC();
}
[COLOR=#0000FF]else[/COLOR]
Console.WriteLine([COLOR=#800000]"Ошибка в потоке {0}"[/COLOR], Task.CurrentId);
}
[COLOR=#0000FF]public[/COLOR] [COLOR=#0000FF]void[/COLOR] W()
{
[COLOR=#0000FF]for[/COLOR] ([COLOR=#0000FF]int[/COLOR] y = [COLOR=#00008B]0[/COLOR]; y < [COLOR=#00008B]1[/COLOR];y++ )
{
[COLOR=#0000FF]using[/COLOR] (libnodave.PDU p = Connect.prepareReadRequest())
{
p.addVarToReadRequest(libnodave.daveDB, [COLOR=#00008B]102[/COLOR], [COLOR=#00008B]2[/COLOR], [COLOR=#00008B]3[/COLOR]);
p.addVarToReadRequest(libnodave.daveDB, [COLOR=#00008B]102[/COLOR], [COLOR=#00008B]6[/COLOR], [COLOR=#00008B]3[/COLOR]);
[COLOR=#0000FF]using[/COLOR] (libnodave.resultSet rl = [COLOR=#0000FF]new[/COLOR] libnodave.resultSet())
{
Connect.execReadRequest(p, rl);
[COLOR=#0000FF]for[/COLOR] ([COLOR=#0000FF]int[/COLOR] x = [COLOR=#00008B]0[/COLOR]; x < [COLOR=#00008B]19[/COLOR]; x++)
{
[COLOR=#0000FF]if[/COLOR] (Connect.useResult(rl, x) == [COLOR=#00008B]0[/COLOR])
{
Console.WriteLine([COLOR=#800000]"Значение{0}|{1}:{2}|{3}|{4}"[/COLOR], [COLOR=#00008B]1[/COLOR], x + [COLOR=#00008B]1[/COLOR], Connect.getFloat(), DateTime.Now.ToString([COLOR=#800000]"mm:ss.fff"[/COLOR]), Task.CurrentId);
}
[COLOR=#0000FF]else[/COLOR]
Console.WriteLine([COLOR=#800000]"Error"[/COLOR]);
}
}
}
}
}
}
}