
wpf
Task.Delay(-1)返回永不完成的Task,等效于Timeout.Infinite,需配合CancellationToken使用;Task.WaitAll同步阻塞线程,禁用在UI/请求线程;二...
async/await不创建新线程,但上下文切换可能增多:UI/旧ASP.NET中因SynchronizationContext导致调度开销;ASP.NETCore已移除该机制;IOCP或计时器回调触...
服务器GC是Web服务默认选择,.NET运行时自动启用;工作站GC仅适用于单用户桌面应用。可通过GCSettings.IsServerGC或性能计数器验证,配置优先级为环境变量>csproj>自动检测...
Task.Yield()本质是让出当前上下文、强制触发await挂起与恢复,使后续代码延至下一调度周期执行;Task.Delay(1)则是真实等待至少1毫秒,依赖系统计时器且不可靠。
ConfigureAwait(true)默认且仅在存在活跃UI同步上下文时才有效,多数场景无需显式指定;它不保证线程安全,仅控制是否尝试调度回原始上下文。
WinForms启用拖放需三步:设目标控件AllowDrop=true;绑定DragEnter并设置e.Effect;源控件调用DoDragDrop()。WPF需显式设AllowDrop="...
async方法会被编译器重写为实现IAsyncStateMachine的状态机,含MoveNext、状态字段和提升的局部变量;await本质是注册回调而非线程阻塞,通过状态保存与恢复实现异步流。
EFCore在WPF中需通过依赖注入管理DbContext生命周期,注册为Scoped,配合异步操作与MVVM模式;避免UI线程newContext或同步调用,确保数据库操作async/await并用...
.Result和.Wait()在UI或ASP.NET同步上下文中会死锁,因它们阻塞线程导致await无法回调;应全程使用async/await,必要时用ConfigureAwait(false)避免上...
应避免使用lock(this),因其会暴露锁对象导致同步失控;正确做法是使用私有只读对象字段(如privatereadonlyobject_syncLock=newobject();)作为锁,确保锁范...