コード例 #1
0
 public ETWSession(TraceEventSession session)
 {
     this.session = session;
     this.backgroundProcessesCts = new CancellationTokenSource();
     this.syncObject             = new object();
     state          = ETWSessionState.NotStarted;
     processingTask = null;
 }
コード例 #2
0
        public void StartProcessing()
        {
            lock (syncObject)
            {
                if (state == ETWSessionState.NotStarted)
                {
#pragma warning disable 4014
                    StartTimeSynchronizer(backgroundProcessesCts.Token);
#pragma warning restore 4014
                    processingTask = Task.Factory.StartNew(StartProcessingInternal, TaskCreationOptions.LongRunning);
                    state          = ETWSessionState.Started;
                }
            }
        }
コード例 #3
0
 public void Dispose()
 {
     lock (syncObject)
     {
         if (state == ETWSessionState.Started)
         {
             backgroundProcessesCts.Cancel();
         }
         session.Dispose();
         try
         {
             processingTask.Wait(1000);
         }
         catch { }
         state = ETWSessionState.Disposed;
     }
 }