Jakby ktoś potrzebował to macie:
static class RozszerzarkaBinaryReader
{
static object tmp;
static bool czyOk;
static public int domyslneOczekiwanie = 5000;
public static bool OdbierzString(this BinaryReader br, ref string zm, int milliseconds = -1)
{
if (milliseconds == -1)
milliseconds = domyslneOczekiwanie;
czyOk = true;
var odbieranieThread = new Thread(delegate ()
{
try
{
tmp = br.ReadString();
}
catch (Exception)
{
czyOk = false;
return;
}
});
odbieranieThread.Start();
for (int i = 0; i < milliseconds / 100.0; i++)
{
if (!odbieranieThread.IsAlive)
{
if (czyOk)
zm = (string)tmp;
return czyOk;
}
Thread.Sleep(100);
}
odbieranieThread.Abort();
return false;
}
public static bool OdbierzInt32(this BinaryReader br, ref Int32 zm, int milliseconds = -1) //////////////////podmianka
{
if (milliseconds == -1)
milliseconds = domyslneOczekiwanie;
czyOk = true;
var odbieranieThread = new Thread(delegate ()
{
try
{
tmp = br.ReadInt32(); //////////////////podmianka
}
catch (Exception)
{
czyOk = false;
return;
}
});
odbieranieThread.Start();
for (int i = 0; i < milliseconds / 100.0; i++)
{
if (!odbieranieThread.IsAlive)
{
if (czyOk)
zm = (Int32)tmp; //////////////////podmianka
return czyOk;
}
Thread.Sleep(100);
}
odbieranieThread.Abort();
return false;
}
public static bool OdbierzBool(this BinaryReader br, ref bool zm, int milliseconds = -1) //////////////////podmianka
{
if (milliseconds == -1)
milliseconds = domyslneOczekiwanie;
czyOk = true;
var odbieranieThread = new Thread(delegate ()
{
try
{
tmp = br.ReadBoolean(); //////////////////podmianka
}
catch (Exception)
{
czyOk = false;
return;
}
});
odbieranieThread.Start();
for (int i = 0; i < milliseconds / 100.0; i++)
{
if (!odbieranieThread.IsAlive)
{
if (czyOk)
zm = (bool)tmp; //////////////////podmianka
return czyOk;
}
Thread.Sleep(100);
}
odbieranieThread.Abort();
return false;
}
}