public EventPipeListener(int targetProcessId, IEnumerable <EventPipeProvider> providers) { var client = new DiagnosticsClient(targetProcessId); _listeningSession = client.StartEventPipeSession(providers); _eventSource = new EventPipeEventSource(_listeningSession.EventStream); _eventSource.Kernel.All += (TraceEvent @event) => KernelEvents?.Invoke(@event); _eventSource.Clr.All += (TraceEvent @event) => ClrEvents?.Invoke(@event); _eventSource.Dynamic.All += (TraceEvent @event) => CustomEvents?.Invoke(@event); Task.Factory.StartNew(() => _eventSource.Process(), _cts.Token, TaskCreationOptions.LongRunning, TaskScheduler.Default); //with a code like this we can output a memory dump depending on some threshold of CPU usage /* * _eventSource.Dynamic.All += (TraceEvent obj) => * { * if (obj.EventName.Equals("EventCounters")) * { * IDictionary<string, object> payloadVal = (IDictionary<string, object>)(obj.PayloadValue(0)); * IDictionary<string, object> payloadFields = (IDictionary<string, object>)(payloadVal["Payload"]); * if (payloadFields["Name"].ToString().Equals("cpu-usage")) * { * double cpuUsage = Double.Parse(payloadFields["Mean"]); * if (cpuUsage > (double)threshold) * { * client.WriteDump(DumpType.Normal, "./minidump.dmp"); * } * } * } * } */ }
public void UserLoses() { if (ListeningToOrders) { LoseDisplayScore.GetComponent <Text>().text = "Score :" + Score.ToString(); UserLosesEvents.Invoke(); ListeningToOrders = false; // Invoke ("ReloadScene", 3f); } }
public void UserWins() { if (ListeningToOrders) { Score += 10; WinDisplayScore.GetComponent <Text>().text = "Score :" + Score.ToString(); UserWinsEvents.Invoke(); ListeningToOrders = false; Invoke("ReloadScene", 3f); } }