internal InfiniteScrollList(Lazy <JoinableTaskFactory> joinableTaskFactory) { if (joinableTaskFactory == null) { throw new ArgumentNullException(nameof(joinableTaskFactory)); } _joinableTaskFactory = joinableTaskFactory; InitializeComponent(); _list.ItemsLock = ReentrantSemaphore.Create( initialCount: 1, joinableTaskContext: _joinableTaskFactory.Value.Context, mode: ReentrantSemaphore.ReentrancyMode.Stack); BindingOperations.EnableCollectionSynchronization(Items, _list.ItemsLock); ItemsView = new CollectionViewSource() { Source = Items }.View; DataContext = ItemsView; CheckBoxesEnabled = false; _loadingStatusIndicator.PropertyChanged += LoadingStatusIndicator_PropertyChanged; }
protected override ReentrantSemaphore CreateSemaphore(ReentrantSemaphore.ReentrancyMode mode, int initialCount = 1) { if (this.joinableTaskContext == null) { using (this.Dispatcher.Apply()) { this.joinableTaskContext = new JoinableTaskContext(); } } return(ReentrantSemaphore.Create(initialCount, this.joinableTaskContext, mode)); }
internal InfiniteScrollList(Lazy <JoinableTaskFactory> joinableTaskFactory) { if (joinableTaskFactory == null) { throw new ArgumentNullException(nameof(joinableTaskFactory)); } _joinableTaskFactory = joinableTaskFactory; InitializeComponent(); _list.ItemsLock = ReentrantSemaphore.Create( initialCount: 1, joinableTaskContext: _joinableTaskFactory.Value.Context, mode: ReentrantSemaphore.ReentrancyMode.Stack); BindingOperations.EnableCollectionSynchronization(Items, _list.ItemsLock); DataContext = Items; CheckBoxesEnabled = false; }
protected OnceInitializedOnceDisposedUnderLockAsync(JoinableTaskContextNode joinableTaskContextNode) : base(joinableTaskContextNode) { _semaphore = ReentrantSemaphore.Create(1, joinableTaskContextNode.Context, ReentrantSemaphore.ReentrancyMode.Stack); }
#pragma warning disable VSTHRD012 // Provide JoinableTaskFactory where allowed (we do this in the JTF-aware variant of these tests in a derived class.) protected virtual ReentrantSemaphore CreateSemaphore(ReentrantSemaphore.ReentrancyMode mode = ReentrantSemaphore.ReentrancyMode.NotAllowed, int initialCount = 1) => ReentrantSemaphore.Create(initialCount, mode: mode);