unsafe void StartSendProcedure()
{
lock (lock_q)
{
if (inSend)
return;
inSend = true;
}
//Task.Run(() =>
//{
lock (lock_q)
{
if (toSend == null)
{
if (q.Count() > 0)
{
toSend = q.Dequeue();
totalBytesInQUeue -= toSend.Length;
}
else
{
inSend = false;
return;
}
}
}
//here we got smth toSend
while(true)
{
//if (ewh_Writer_ReadyToWrite.WaitOne(2 * 1000))
if (ewh_Writer_ReadyToWrite.WaitOne())
{
ewh_Writer_ReadyToWrite.Reset();
//Writing into MMF
//Writer_accessor.WriteArray<byte>(0, toSend, 0, toSend.Length);
this.WriteBytes(Writer_accessor_ptr, 0, toSend);
//Setting signal ready to read
ewh_Writer_ReadyToRead.Set();
lock (lock_q)
{
toSend = null;
if (q.Count() == 0)
{
//Console.WriteLine(DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss.fff") + "> Out of thread");
inSend = false;
return;
}
toSend = q.Dequeue();
totalBytesInQUeue -= toSend.Length;
}
}
//else
//{
// Console.WriteLine(DateTime.Now.ToString("dd.MM.yyyy HH:mm:ss.fff") + "> Timeout of sending we must repeat operation");
//}
}
//});
}