Предполагается, что под "стороной SQL" вы подразумеваете методы BeginXXX EndXXX
для объекта SqlCommand
, а пользовательский интерфейс означает просто делегат, выполняемый асинхронно - нет разницы в производительности, предоставляемой простым использованием одного против другого.Разница в производительности между ними будет зависеть только от кода, который вы запускаете - сторона SQL будет выполнять команду только асинхронно, сторона пользовательского интерфейса может иметь много другого кода, который вы предоставляете.
В большинстве случаевВ некоторых случаях достаточно просто предоставить асинхронные действия на более высоком уровне, чем команда SQL.В некоторых случаях, например, когда ваш уровень доступа к данным хочет запустить много команд одновременно, будет полезно использовать методы SqlCommand
.
Надеюсь, это где-то рядом с тем, что вы ищете.
Обратите внимание, что при выполнении делегата асинхронно (Delegate.BeginInvoke
) или BeginXXX
метод будет использовать поток ThreadPool
.Различия между использованием делегата и пула потоков быстро описаны здесь:
http://www.toadz.dk/2010/01/delegate-begininvoke-vs-threadpool-queueuserworkitem/