Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Выполнить запрос к БД без ожидания ответа сервера асинхронно / 7 сообщений из 7, страница 1 из 1
19.03.2012, 20:21
    #37712419
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить запрос к БД без ожидания ответа сервера асинхронно
Иногда в программе необходимо вызвать на выполнение в БД сохраненную процедуру, но нет необходимости что либо ждать - т.е ее нужно запустить на исполнение и выполнять программу дальше без ожидания какого-либо результата

Сейчас пользуюсь ExecNonQuery, но так как данный вызов ждет окончания выполнения процедуры, а процедура довольно большая по объему работы и занимает много времени - программа зависает на время исполнения этой процедуры (а она лопатит на сервере таблицу и обрабатывает данные которые не нужны сейчас клиенту)

Как это можно сделать? спасибо.
...
Рейтинг: 0 / 0
19.03.2012, 20:36
    #37712436
МСУ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить запрос к БД без ожидания ответа сервера асинхронно
Что мешает в отдельном потоке запускать долгоиграющие телодвижения?
...
Рейтинг: 0 / 0
19.03.2012, 21:42
    #37712513
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить запрос к БД без ожидания ответа сервера асинхронно
sp,

Посмотрите профайлер. Если где-то встретится таблескан, то перепишите процедуру.
...
Рейтинг: 0 / 0
19.03.2012, 21:45
    #37712515
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить запрос к БД без ожидания ответа сервера асинхронно
Пардон, имел ввиду план запроса.
...
Рейтинг: 0 / 0
19.03.2012, 23:51
    #37712652
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить запрос к БД без ожидания ответа сервера асинхронно
ShSerge,

Вопрос не в оптимальности запросов - там длительная обработка и задумана по-плану - мне просто нужно на клиенте сделать запуск процедуры и оставить ее спокойно работать, а клиент чтоб дальше себе продолжал работать не дожидаясь окончания выполнения сохраненной процедуры
...
Рейтинг: 0 / 0
20.03.2012, 00:11
    #37712667
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить запрос к БД без ожидания ответа сервера асинхронно
spShSerge,

Вопрос не в оптимальности запросов - там длительная обработка и задумана по-плану - мне просто нужно на клиенте сделать запуск процедуры и оставить ее спокойно работать, а клиент чтоб дальше себе продолжал работать не дожидаясь окончания выполнения сохраненной процедуры
Тогда это делается не приложением, а джобом.
ПС. А если приложением, то что будет, если пользователь пару раз кнопарь жамкнет, или второй экземпляр приложения запустит и опять кнопарь жамкнет? Вы это предусмотрели?
...
Рейтинг: 0 / 0
20.03.2012, 00:40
    #37712678
sp
sp
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Выполнить запрос к БД без ожидания ответа сервера асинхронно
ShSergeТогда это делается не приложением, а джобом.
ПС. А если приложением, то что будет, если пользователь пару раз кнопарь жамкнет, или второй экземпляр приложения запустит и опять кнопарь жамкнет? Вы это предусмотрели?

ну у меня юзер не жмякает - а вызывается все это при определенных событиях в приложении, а потом в процедуре выставляются флаги чтоб трижды не вызывать процедуру пока она в работе!

Решил я вопрос:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
private static void CallSP()
		{
			var connection = new SqlConnection(ConfigurationManager.ConnectionStrings["db"].ConnectionString + "async=True;");
			var command = new SqlCommand("dbo.DoSomthingLong", connection);
			
			command.CommandType = CommandType.StoredProcedure;
			connection.Open();
			command.BeginExecuteReader(null, command, CommandBehavior.CloseConnection);
		}



Вызываем SP асинхронно и не указываем callback (или можно указать пустотелый callback)
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Выполнить запрос к БД без ожидания ответа сервера асинхронно / 7 сообщений из 7, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]