这个问题涉及AMP(.Net< 4.5)请不要建议我使用TAP。我知道它。 但是试着理解这种实现的正确方法是什么,而且正在进行CLR。 我对Squrare Root有以下实现
public IAsyncResult BeginGetSquareRoot(double value, AsyncCallback callback, object state)
{
GetSquareRootAsyncResult asyncResult =
new GetSquareRootAsyncResult(callback, state);
asyncResult.Value = value;
ThreadPool.QueueUserWorkItem(
new WaitCallback((Callback)),
asyncResult);
return asyncResult;
}
现在我想为某些存储过程执行实现其他异步调用
我是否也应该使用带回调的线程池。或者我可以只调用BeginExecuteReader(AsyncCallback callback, object stateObject);
或者(如果我不使用ThreadPool)它可能只是打开太多线程并卡住系统?
答案 0 :(得分:1)
使用线程池进行数据库工作是众所周知的异步同步反模式。始终使用异步IO。使用BeginExecuteReader
因为这不会阻止线程。它运行时不需要线程。