Stored procedures 如何异步运行存储过程并继续使用C中的其他语句#
下面是我编写的代码,希望能够异步启动存储过程,并让调用下的代码运行,以便进行必要的UI更改但这只在我从VisualStudio运行时有效,在我放置断点时也有效。当我删除断点时,它不会在以下行之后运行代码:- IAsyncResult result=command.beginExecutenQuery() 然而,我只是假设它没有运行,但我不确定,因为我不知道如何正确地知道它是否正在运行,这取决于我能说的输出。按钮隐藏或可见性逻辑不起作用 我想,因为上面的语句是异步的,所以我可以根据需要实现执行 为了实现此代码,我参考了以下内容:-Stored procedures 如何异步运行存储过程并继续使用C中的其他语句#,stored-procedures,ado.net,execute,asynchronous,Stored Procedures,Ado.net,Execute,Asynchronous,下面是我编写的代码,希望能够异步启动存储过程,并让调用下的代码运行,以便进行必要的UI更改但这只在我从VisualStudio运行时有效,在我放置断点时也有效。当我删除断点时,它不会在以下行之后运行代码:- IAsyncResult result=command.beginExecutenQuery() 然而,我只是假设它没有运行,但我不确定,因为我不知道如何正确地知道它是否正在运行,这取决于我能说的输出。按钮隐藏或可见性逻辑不起作用 我想,因为上面的语句是异步的,所以我可以根据需要实现执行 为
您似乎正在检查,以查看查询是否通过调用自定义方法
GetCurrentRunningJob
完成
如果是这样的话,你不需要这样做。相反,如果操作完成,您可以查看结果上的属性-true;否则,false
IAsyncResult result = command.BeginExecuteNonQuery();
while (!result.IsCompleted)
{
// your code
}
command.EndExecuteNonQuery(result);
谢谢你,我会尝试的很好!!!!!很有效,谢谢。但是这个想法是为了找出sql作业是否正在运行,这就是我使用该方法的原因。作业开始的那一刻,我在一个表中做了一个条目,我用来获取状态的方法(GetCurrentRunningJob)给出了该表中的状态,并根据该状态向用户显示它是否已开始。使用您的技术有助于代码的执行,但我必须假设作业已成功启动。我想知道它是否启动了。您是否考虑过
ExecuteNonQueryAsync
和async
/wait
?
IAsyncResult result = command.BeginExecuteNonQuery();
while (!result.IsCompleted)
{
// your code
}
command.EndExecuteNonQuery(result);