Files
Dec2017-Script-Dump/UnityEngine/UnitySynchronizationContext.cs
T
2026-06-04 11:42:34 +02:00

91 lines
2.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Threading;
using UnityEngine.Scripting;
namespace UnityEngine
{
// Token: 0x0200048C RID: 1164
internal sealed class UnitySynchronizationContext : SynchronizationContext
{
// Token: 0x06003A17 RID: 14871 RVA: 0x00065634 File Offset: 0x00063834
public override void Send(SendOrPostCallback callback, object state)
{
callback(state);
}
// Token: 0x06003A18 RID: 14872 RVA: 0x00065640 File Offset: 0x00063840
public override void Post(SendOrPostCallback callback, object state)
{
object asyncWorkQueue = this.m_AsyncWorkQueue;
lock (asyncWorkQueue)
{
this.m_AsyncWorkQueue.Enqueue(new UnitySynchronizationContext.WorkRequest(callback, state));
}
}
// Token: 0x06003A19 RID: 14873 RVA: 0x0006568C File Offset: 0x0006388C
private void Exec()
{
object asyncWorkQueue = this.m_AsyncWorkQueue;
lock (asyncWorkQueue)
{
while (this.m_AsyncWorkQueue.Count > 0)
{
this.m_AsyncWorkQueue.Dequeue().Invoke();
}
}
}
// Token: 0x06003A1A RID: 14874 RVA: 0x000656F0 File Offset: 0x000638F0
[RequiredByNativeCode]
private static void InitializeSynchronizationContext()
{
if (SynchronizationContext.Current == null)
{
SynchronizationContext.SetSynchronizationContext(new UnitySynchronizationContext());
}
}
// Token: 0x06003A1B RID: 14875 RVA: 0x00065708 File Offset: 0x00063908
[RequiredByNativeCode]
private static void ExecuteTasks()
{
UnitySynchronizationContext unitySynchronizationContext = SynchronizationContext.Current as UnitySynchronizationContext;
if (unitySynchronizationContext != null)
{
unitySynchronizationContext.Exec();
}
}
// Token: 0x04001197 RID: 4503
private const int kAwqInitialCapacity = 20;
// Token: 0x04001198 RID: 4504
private readonly Queue<UnitySynchronizationContext.WorkRequest> m_AsyncWorkQueue = new Queue<UnitySynchronizationContext.WorkRequest>(20);
// Token: 0x0200048D RID: 1165
private struct WorkRequest
{
// Token: 0x06003A1C RID: 14876 RVA: 0x00065730 File Offset: 0x00063930
public WorkRequest(SendOrPostCallback callback, object state)
{
this.m_DelagateCallback = callback;
this.m_DelagateState = state;
}
// Token: 0x06003A1D RID: 14877 RVA: 0x00065744 File Offset: 0x00063944
public void Invoke()
{
this.m_DelagateCallback(this.m_DelagateState);
}
// Token: 0x04001199 RID: 4505
private readonly SendOrPostCallback m_DelagateCallback;
// Token: 0x0400119A RID: 4506
private readonly object m_DelagateState;
}
}
}