packages/MaterialDesignThemes.2.5.1/src/net45/SnackbarMessageQueue.cs
(开头部分) 18KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Input;
using System.Windows.Threading;
namespace MaterialDesignThemes.Wpf
{
public class SnackbarMessageQueue : ISnackbarMessageQueue, IDisposable
{
private readonly TimeSpan _messageDuration;
private readonly HashSet<Snackbar> _pairedSnackbars = new HashSet<Snackbar>();
private readonly LinkedList<SnackbarMessageQueueItem> _snackbarMessages = new LinkedList<SnackbarMessageQueueItem>();
private readonly ManualResetEvent _disposedEvent = new ManualResetEvent(false);
private readonly ManualResetEvent _pausedEvent = new ManualResetEvent(false);
private readonly ManualResetEvent _messageWaitingEvent = new ManualResetEvent(false);
private Tuple<SnackbarMessageQueueItem, DateTime> _latestShownItem;
private int _pauseCounter;
private bool _isDisposed;
#region private class MouseNotOverManagedWaitHandle : IDisposable
private class MouseNotOverManagedWaitHandle : IDisposable
{
private readonly ManualResetEvent _waitHandle;
private readonly ManualResetEvent _disposedWaitHandle = new ManualResetEvent(false);
private Action _cleanUp;
private bool _isWaitHandleDisposed;
private readonly object _waitHandleGate = new object();
public MouseNotOverManagedWaitHandle(UIElement uiElement)
{
if (uiElement == null) throw new ArgumentNullException(nameof(uiElement));
_waitHandle = new ManualResetEvent(!uiElement.IsMouseOver);
uiElement.MouseEnter += UiElementOnMouseEnter;
uiElement.MouseLeave += UiElementOnMouseLeave;
_cleanUp = () =>
{
uiElement.MouseEnter -= UiElementOnMouseEnter;
uiElement.MouseLeave -= UiElementOnMouseLeave;
lock (_waitHandleGate)
{
_waitHandle.Dispose();
_isWaitHandleDisposed = true;
}
_disposedWaitHandle.Set();
_disposedWaitHandle.Dispose();
_cleanUp = () => { };
};
}
public WaitHandle WaitHandle => _waitHandle;
private void UiElementOnMouseLeave(object sender, MouseEventArgs mouseEventArgs)
后面还有 389 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。