public void ProcessResult(ProfilerItem sqlProfileItem)
        {
            var serializer = new DataContractJsonSerializer(typeof(ProfilerItem));
            lock(_syncRoot)
            {
                if (_fileStream.Position > 1)
                {
                    _streamWriter.Write(",");
                    _streamWriter.Flush();
                }

                serializer.WriteObject(_fileStream, sqlProfileItem);
                long position = _fileStream.Position;
                _streamWriter.Write("]");
                _streamWriter.Flush();
                _fileStream.Position = position;
            }
        }
 protected void ProcessResult(ProfilerItem sqlProfileItem)
 {
     ProfilingResults.Add(sqlProfileItem);
 }
Exemplo n.º 3
0
        public override void Update()
        {
            var debugInfo = Target.Code.DebugInfo;

            _start.Caption = _profiling ? "Stop" : "Start";
            _message.Visible = debugInfo == null;

            if (Target == null || !_window.Visible || debugInfo == null || Target.Paused || !_profiling)
                return;

            // TODO: this needs to be based on TimeScale or something...

            _totalSamples++;

            var symbol = debugInfo.FindSymbol(Target.Vm.IP);
            if (!symbol.HasValue)
                return;

            var function = symbol.Value.Name.Split('.')[0];

            ProfilerItem item;
            if (_items.TryGetValue(function, out item))
            {
                item.Samples++;
            }
            else
            {
                item = new ProfilerItem(function);
                _items.Add(function, item);
                _profilerView.Items.Add(item);
            }
        }