У меня есть клиентское приложение, которое собирает данные в необработанную таблицу. Это клиентское приложение выполняет асинхронный вызов хранимой процедуры, которая фактически анализирует необработанные данные в таблицы. Эта обработка обрабатывается хранимой процедурой. Эта хранимая процедура может занять до получаса. Мы хотим, чтобы клиентское приложение, вызывающее хранимый процесс, закрылось и полностью прекратило работу. Как только мы уничтожаем клиентское приложение, которое вызывает хранимый процесс, хранимая процедура прекращает выполнение.
Каков наилучший способ добиться этого? Я не хочу запускать работу на сервере. Я хочу, чтобы клиентское приложение запускало эту обработку. Триггер базы данных (моя первая идея) также не решил проблему, потому что не считает вставку завершенной, пока не завершится хранимая процедура, вызываемая триггером.
Вот метод Async. Я использую LINQ. Могу ли я как-то изменить это? Или мне вообще нужен новый дизайн?
partial class MetaDataContext
{
delegate int Process_CompleteCycle2Delegate(int? frequencyID, int? cycleID);
public void Process_CompleteCycle2Async(int? frequencyID, int? cycleID)
{
Process_CompleteCycle2Delegate completeCycleDelegate = new Process_CompleteCycle2Delegate(this.Process_CompleteCycle2);
IAsyncResult async = completeCycleDelegate.BeginInvoke(frequencyID, cycleID, null, null);
}