@@ -18,8 +18,9 @@ public abstract class Renderer : IDisposable
18
18
{
19
19
private readonly ComponentFactory _componentFactory ;
20
20
private readonly Dictionary < int , ComponentState > _componentStateById = new Dictionary < int , ComponentState > ( ) ;
21
+ private readonly RenderBatchBuilder _batchBuilder = new RenderBatchBuilder ( ) ;
21
22
private readonly Dictionary < int , EventCallback > _eventBindings = new Dictionary < int , EventCallback > ( ) ;
22
- private IDispatcher _dispatcher { get ; }
23
+ private readonly IDispatcher _dispatcher ;
23
24
24
25
private int _nextComponentId = 0 ; // TODO: change to 'long' when Mono .NET->JS interop supports it
25
26
private bool _isBatchInProgress ;
@@ -68,8 +69,6 @@ public Renderer(IServiceProvider serviceProvider, IDispatcher dispatcher) : this
68
69
_dispatcher = dispatcher ;
69
70
}
70
71
71
- internal RenderBatchBuilder RenderBatchBuilder { get ; } = new RenderBatchBuilder ( ) ;
72
-
73
72
/// <summary>
74
73
/// Creates an <see cref="IDispatcher"/> that can be used with one or more <see cref="Renderer"/>.
75
74
/// </summary>
@@ -388,7 +387,7 @@ protected internal virtual void AddToRenderQueue(int componentId, RenderFragment
388
387
return ;
389
388
}
390
389
391
- RenderBatchBuilder . ComponentRenderQueue . Enqueue (
390
+ _batchBuilder . ComponentRenderQueue . Enqueue (
392
391
new RenderQueueEntry ( componentState , renderFragment ) ) ;
393
392
394
393
if ( ! _isBatchInProgress )
@@ -420,23 +419,24 @@ private ComponentState GetRequiredComponentState(int componentId)
420
419
421
420
private ComponentState GetOptionalComponentState ( int componentId )
422
421
=> _componentStateById . TryGetValue ( componentId , out var componentState )
423
- ? componentState
422
+ ? componentState
424
423
: null ;
425
424
426
425
private void ProcessRenderQueue ( )
427
426
{
428
- var updateDisplayTask = Task . CompletedTask ;
429
427
_isBatchInProgress = true ;
428
+ var updateDisplayTask = Task . CompletedTask ;
429
+
430
430
try
431
431
{
432
432
// Process render queue until empty
433
- while ( RenderBatchBuilder . ComponentRenderQueue . Count > 0 )
433
+ while ( _batchBuilder . ComponentRenderQueue . Count > 0 )
434
434
{
435
- var nextToRender = RenderBatchBuilder . ComponentRenderQueue . Dequeue ( ) ;
435
+ var nextToRender = _batchBuilder . ComponentRenderQueue . Dequeue ( ) ;
436
436
RenderInExistingBatch ( nextToRender ) ;
437
437
}
438
438
439
- var batch = RenderBatchBuilder . ToBatch ( ) ;
439
+ var batch = _batchBuilder . ToBatch ( ) ;
440
440
updateDisplayTask = UpdateDisplayAsync ( batch ) ;
441
441
442
442
// Fire off the execution of OnAfterRenderAsync, but don't wait for it
@@ -445,8 +445,8 @@ private void ProcessRenderQueue()
445
445
}
446
446
finally
447
447
{
448
- RemoveEventHandlerIds ( RenderBatchBuilder . DisposedEventHandlerIds . ToRange ( ) , updateDisplayTask ) ;
449
- RenderBatchBuilder . Clear ( ) ;
448
+ RemoveEventHandlerIds ( _batchBuilder . DisposedEventHandlerIds . ToRange ( ) , updateDisplayTask ) ;
449
+ _batchBuilder . Clear ( ) ;
450
450
_isBatchInProgress = false ;
451
451
}
452
452
}
@@ -495,15 +495,15 @@ private Task InvokeRenderCompletedCalls(ArrayRange<RenderTreeDiff> updatedCompon
495
495
private void RenderInExistingBatch ( RenderQueueEntry renderQueueEntry )
496
496
{
497
497
renderQueueEntry . ComponentState
498
- . RenderIntoBatch ( RenderBatchBuilder , renderQueueEntry . RenderFragment ) ;
498
+ . RenderIntoBatch ( _batchBuilder , renderQueueEntry . RenderFragment ) ;
499
499
500
500
// Process disposal queue now in case it causes further component renders to be enqueued
501
- while ( RenderBatchBuilder . ComponentDisposalQueue . Count > 0 )
501
+ while ( _batchBuilder . ComponentDisposalQueue . Count > 0 )
502
502
{
503
- var disposeComponentId = RenderBatchBuilder . ComponentDisposalQueue . Dequeue ( ) ;
504
- GetRequiredComponentState ( disposeComponentId ) . DisposeInBatch ( RenderBatchBuilder ) ;
503
+ var disposeComponentId = _batchBuilder . ComponentDisposalQueue . Dequeue ( ) ;
504
+ GetRequiredComponentState ( disposeComponentId ) . DisposeInBatch ( _batchBuilder ) ;
505
505
_componentStateById . Remove ( disposeComponentId ) ;
506
- RenderBatchBuilder . DisposedComponentIds . Append ( disposeComponentId ) ;
506
+ _batchBuilder . DisposedComponentIds . Append ( disposeComponentId ) ;
507
507
}
508
508
}
509
509
0 commit comments