@@ -19,16 +19,14 @@ internal sealed class ActivityId
19
19
internal readonly Guid Id ;
20
20
internal readonly uint Sequence ;
21
21
22
- internal ActivityId ( uint sequence )
22
+ internal ActivityId ( Guid ? currentActivityId , uint sequence = 1 )
23
23
{
24
- this . Id = Guid . NewGuid ( ) ;
25
- this . Sequence = sequence ;
24
+ Id = currentActivityId ?? Guid . NewGuid ( ) ;
25
+ Sequence = sequence ;
26
26
}
27
27
28
28
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 ) ;
32
30
}
33
31
34
32
// Declare the ActivityId which will be stored in TLS. The Id is unique for each thread.
@@ -40,27 +38,12 @@ public override string ToString()
40
38
/// <summary>
41
39
/// Get the current ActivityId
42
40
/// </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 ) ;
54
42
55
43
/// <summary>
56
44
/// Increment the sequence number and generate the new ActivityId
57
45
/// </summary>
58
46
/// <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 ) ;
65
48
}
66
49
}
0 commit comments