private async void DoMemoryReadout() { while (running) { try { //Read data from memory currentMemoryReadout = memReader.DoReadout(); } catch (Exception e) { if (running) { Logger.LogError("Error while reading memory: {0} {1}\r\n{2}", e.GetType(), e.Message, e.StackTrace); } } OnMemoryReadout?.Invoke(this, new OnMemoryReadoutArgs() { memoryReadout = currentMemoryReadout }); //Print memreadout if debug is enabled currentMemoryReadout.Print(); await Task.Delay(100); } }
private async void DoMemoryReadout() { float lastTimer = currentMemoryReadout.songTimer; while (running) { try { //Read data from memory currentMemoryReadout = memReader.DoReadout(); } catch (Exception e) { if (running) { Logger.LogError("Error while reading memory: {0} {1}\r\n{2}", e.GetType(), e.Message, e.StackTrace); } } OnMemoryReadout?.Invoke(this, new OnMemoryReadoutArgs() { memoryReadout = currentMemoryReadout }); //var mem = System.Diagnostics.Process.GetCurrentProcess().WorkingSet64 / (1024 * 1024); //Logger.Log(string.Format("Memory@tick: {0}mb", mem)); switch (Environment.OSVersion.Platform) { case PlatformID.MacOSX: case PlatformID.Unix: if (currentMemoryReadout.gameState.ToLower().Contains("game") && Math.Abs(currentMemoryReadout.songTimer - lastTimer) > 1) { // scan for note data from memory if required memReader.DoPointerScanMacOS(); lastTimer = currentMemoryReadout.songTimer; } break; default: //if (Math.Abs(currentMemoryReadout.songTimer - lastTimer) > 1) //{ // // scan for note data from memory if required // memReader.DoPointerScanWin32(); // lastTimer = currentMemoryReadout.songTimer; //} break; } //Print memreadout if debug is enabled currentMemoryReadout.Print(); await Task.Delay(100); } }
private async void DoMemoryReadout() { while (running) { await Task.Delay(100); RSMemoryReadout newReadout = null; try { //Read data from memory newReadout = memReader.DoReadout(); } catch (Exception e) { if (running) { Logger.LogError("Error while reading memory: {0} {1}\r\n{2}", e.GetType(), e.Message, e.StackTrace); } } if (newReadout == null) { continue; } if (newReadout.songID != currentMemoryReadout.songID || (currentCDLCDetails == null || !currentCDLCDetails.IsValid())) { var newDetails = cache.Get(newReadout.songID); if (newDetails != null && newDetails.IsValid()) { currentCDLCDetails = cache.Get(newReadout.songID); OnSongChanged?.Invoke(this, new OnSongChangedArgs { songDetails = currentCDLCDetails }); currentCDLCDetails.Print(); } } newReadout.CopyTo(ref currentMemoryReadout); OnMemoryReadout?.Invoke(this, new OnMemoryReadoutArgs() { memoryReadout = currentMemoryReadout }); //Print memreadout if debug is enabled currentMemoryReadout.Print(); } }