Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches

◆ Release()

void System.Threading.DeferredDisposableLifetime< T >.Release ( T obj)
inline

Definition at line 24 of file DeferredDisposableLifetime.cs.

25 {
26 int num3;
27 while (true)
28 {
29 int num = Volatile.Read(ref _count);
30 if (num > 0)
31 {
32 int num2 = num - 1;
33 if (Interlocked.CompareExchange(ref _count, num2, num) == num)
34 {
35 if (num2 == 0)
36 {
37 obj.OnFinalRelease(disposed: false);
38 }
39 return;
40 }
41 }
42 else
43 {
44 num3 = num + 1;
45 if (Interlocked.CompareExchange(ref _count, num3, num) == num)
46 {
47 break;
48 }
49 }
50 }
51 if (num3 == -1)
52 {
53 obj.OnFinalRelease(disposed: true);
54 }
55 }

References System.Threading.DeferredDisposableLifetime< T >._count, System.Threading.Interlocked.CompareExchange(), System.obj, and System.Threading.Volatile.Read().