C# 在等待结果时,要使用什么构造来运行SQL Server查询并执行其他操作?

C# 在等待结果时,要使用什么构造来运行SQL Server查询并执行其他操作?,c#,.net,parallel-processing,task-parallel-library,async-await,C#,.net,Parallel Processing,Task Parallel Library,Async Await,我想发出一个SQL Server查询(task1),并在等待查询结果时在循环中进行某种监视(task2)。当task2发现满足某个条件时,需要取消查询(我将使用SQLCommand.Cancel())。这意味着task2可以发出cancel命令,也可以向task1发出取消命令的信号。返回结果或取消时,task2结束,task1继续执行到方法的末尾 对于这一点,什么是最佳且简单的构造?TPL、异步/等待、waithandles、事件。。?在类(而不是UI)中使用.NET 4.5。这取决于进一步的细

我想发出一个SQL Server查询(task1),并在等待查询结果时在循环中进行某种监视(task2)。当task2发现满足某个条件时,需要取消查询(我将使用SQLCommand.Cancel())。这意味着task2可以发出cancel命令,也可以向task1发出取消命令的信号。返回结果或取消时,task2结束,task1继续执行到方法的末尾


对于这一点,什么是最佳且简单的构造?TPL、异步/等待、waithandles、事件。。?在类(而不是UI)中使用.NET 4.5。

这取决于进一步的细节。您可以使用TPL(
Task.WhenAny
CancellationTokenSource
)、
async/wait
和基于异步TAP的SQL API(例如,
SqlCommand.ExecuteNonQueryAsync
)来完成

或者,根据您在task2中监视的条件及其更改的传播方式,您可以使用

使用低级线程和同步原语API将是一个错误的选择,它们很少用于.NET4+