使用什么构造来运行SQL Server查询并在等待结果时执行其他操作
本文关键字:结果 在等待 执行 操作 其他 查询 Server 什么 SQL 运行 | 更新日期: 2023-09-27 18:13:12
我想发出一个SQL Server查询(task1),并在等待查询结果的同时在循环(task2)中进行某种监视。当task2发现满足某个条件时,需要取消查询(我将使用SQLCommand.Cancel())。这意味着task2可以发出cancel命令,或者向task1发出取消命令的信号。当返回结果或发生取消时,task2结束,task1继续执行直到方法结束。
什么是最优的和简单的结构来使用这个?TPL,异步/等待,等待句柄,事件…?在类(不是UI)中使用。net 4.5
这取决于进一步的细节。您可以使用TPL (Task.WhenAny
, CancellationTokenSource
), async/await
和异步基于tap的SQL api(例如,SqlCommand.ExecuteNonQueryAsync
)来完成它。
或者,根据您在task2中监视的条件以及它们的更改如何传播,您可以使用响应式扩展。
使用低级线程和同步原语api将是一个错误的选择,它们应该很少用于。net 4+。