@@ -19,16 +19,14 @@ internal sealed class ActivityId
1919 internal readonly Guid Id ;
2020 internal readonly uint Sequence ;
2121
22- internal ActivityId ( uint sequence )
22+ internal ActivityId ( Guid ? currentActivityId , uint sequence = 1 )
2323 {
24- this . Id = Guid . NewGuid ( ) ;
25- this . Sequence = sequence ;
24+ Id = currentActivityId ?? Guid . NewGuid ( ) ;
25+ Sequence = sequence ;
2626 }
2727
2828 public override string ToString ( )
29- {
30- return string . Format ( CultureInfo . InvariantCulture , "{0}:{1}" , this . Id , this . Sequence ) ;
31- }
29+ => string . Format ( CultureInfo . InvariantCulture , "{0}:{1}" , Id , Sequence ) ;
3230 }
3331
3432 // Declare the ActivityId which will be stored in TLS. The Id is unique for each thread.
@@ -40,27 +38,12 @@ public override string ToString()
4038 /// <summary>
4139 /// Get the current ActivityId
4240 /// </summary>
43- internal static ActivityId Current
44- {
45- get
46- {
47- if ( t_tlsActivity == null )
48- {
49- t_tlsActivity = new ActivityId ( 1 ) ;
50- }
51- return t_tlsActivity ;
52- }
53- }
41+ internal static ActivityId Current => t_tlsActivity ??= new ActivityId ( null ) ;
5442
5543 /// <summary>
5644 /// Increment the sequence number and generate the new ActivityId
5745 /// </summary>
5846 /// <returns>ActivityId</returns>
59- internal static ActivityId Next ( )
60- {
61- t_tlsActivity = new ActivityId ( ( t_tlsActivity ? . Sequence ?? 0 ) + 1 ) ;
62-
63- return t_tlsActivity ;
64- }
47+ internal static ActivityId Next ( ) => t_tlsActivity = new ActivityId ( t_tlsActivity ? . Id , ( t_tlsActivity ? . Sequence ?? 0 ) + 1 ) ;
6548 }
6649}
0 commit comments