WPF код пещерного цикла с таймерами
Я столкнулся с проблемой с кодом пещерного кода, пытаясь сделать цикл, используя таймеры вместо "while". Он просто записывает значение один раз, а затем записывает только значение 0. То, что я хочу, это писать по адресу каждую секунду на основе таймеров и после прочтения некоторого другого значения. Как обновление этого прочитанного значения. У меня есть другой код, который работает просто отлично, но эта пещера кода не:
using System.Timers;
public static System.Timers.Timer aTimer;
public MainWindow()
{
InitializeComponent();
aTimer = new System.Timers.Timer(1000);
aTimer.Elapsed += new ElapsedEventHandler(Timer);
aTimer.AutoReset = true;
GC.KeepAlive(aTimer);
}
public static void Start()
{
OpenProcess(); Allocate(out vMemory, 0x1024);
}
public static void Timer(object source, ElapsedEventArgs e)
{
aTimer.Enabled = true;
int[] wepOffsets = { 0x70, 0x10, 0x20, 0x368, 0x36c };
byte[] readMemory = PointerRead((IntPtr)weapBase, 4, wepOffsets, out bytesToRead);
int final = BitConverter.ToInt32(readMemory, 0);
//MessageBox.Show("value : " + final);
if (final == 5) // at first start it is writing this value then 0
{
byte[] swByte = { 0xC7,0x83,0x22,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x8B,0x74,0x24,0x40,
0x48,0x8B,0x6C,0x24,0x48,0x48,0x8B,0x5C,0x24,0x50,0x48,0x83,0xC4,0x58,0xC3 };
for (int i = 6; i < 10; ++i) { swByte[i] = (byte)(swSpd & 0xFF); swSpd = swSpd >> 8; }
write(vMemory + 8, swByte, 30);
write(vMemory, BitConverter.GetBytes((vMemory + 8)), 8);
write(gameBase, new byte[] { 0xFF, 0x24, 0x25 }, 3);
write(gameBase + 3, BitConverter.GetBytes((vMemory)), 4);
}
if (final == 14) // doesn't reach this part
{
byte[] gsByte = { 0xC7,0x83,0x22,0x05,0x00,0x00,0x00,0x00,0x00,0x00,0x48,0x8B,0x74,0x24,0x40,
0x48,0x8B,0x6C,0x24,0x48,0x48,0x8B,0x5C,0x24,0x50,0x48,0x83,0xC4,0x58,0xC3 };
for (int i = 6; i < 10; ++i) { gsByte[i] = (byte)(gsSpd & 0xFF); gsSpd = gsSpd >> 8; }
write(vMemory + 8, gsByte, 30);
write(vMemory, BitConverter.GetBytes((vMemory + 8)), 8);
write(gameBase, new byte[] { 0xFF, 0x24, 0x25 }, 3);
write(gameBase + 3, BitConverter.GetBytes((vMemory)), 4);
}
}
Ну, мне нужно 2 значения, которые будут записываться каждую секунду, в зависимости от того, что адрес чтения... если это изменилось, то записать новое значение мгновенно. И как я могу уменьшить этот код... я думаю, что могут быть сделаны некоторые модификации:).
Большое спасибо за любую поддержку, идея.