完善海康 SDK 日志
This commit is contained in:
@@ -652,16 +652,26 @@ public abstract class BaseVideoSource : IVideoSource, IAsyncDisposable, IDeviceC
|
||||
/// </summary>
|
||||
public void Dispose()
|
||||
{
|
||||
// 异步销毁在后台执行,避免阻塞 UI 线程
|
||||
Task.Run(async () => await DisposeAsync().ConfigureAwait(false)).GetAwaiter().GetResult();
|
||||
// 触发异步销毁,但设定一个超时兜底,防止永久卡死 UI
|
||||
// 这里等待 2 秒,如果还没销毁完也强行返回,避免界面冻结
|
||||
Task.Run(async () => await DisposeAsync().ConfigureAwait(false))
|
||||
.Wait(TimeSpan.FromSeconds(2));
|
||||
|
||||
GC.SuppressFinalize(this);
|
||||
}
|
||||
|
||||
private volatile bool _isDisposed = false;
|
||||
|
||||
/// <summary>
|
||||
/// 异步销毁资源(优雅关闭)
|
||||
/// </summary>
|
||||
/// <returns>ValueTask</returns>
|
||||
public virtual async ValueTask DisposeAsync()
|
||||
{
|
||||
// 防止重复 Dispose
|
||||
if (_isDisposed) return;
|
||||
_isDisposed = true;
|
||||
|
||||
// 1. 停止业务逻辑
|
||||
await StopAsync().ConfigureAwait(false);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user