2015-07-31 4 views
2

У меня есть хранимая процедура, которая работает в течение 8 минут, необходимо вызвать SP, который будет обновлять записи в нескольких таблицах из приложения WPF, но это тайм-аут, поскольку SP работает в течение 8 минут, So планируя реализовать асинхронный вызов SP, просто запуская SP для запуска, который в конце концов после завершения обновления записей за 8 минут. Я знаю, что SP может быть оптимизирован, но просто хочу знать, есть ли вообще функция, чтобы запускать и не ждать результата.Асинхронный вызов в БД в приложении WPF

Заранее спасибо ..

ответ

1

Его лучше всего выполнять продолжительную работу (например связь с сервером/DB) на фоновом потоке и когда нить завершает, есть поток пользовательского интерфейса обновление пользовательского интерфейса.

С BackgroundWorker:

Простота внедрения фона нарезание резьбы.

var worker = new BackgroundWorker(); 

worker.DoWork += (sender, args) => 
{ 
    // long running work 
}; 

worker.RunWorkerCompleted += (sender, args) => 
{ 
    // Update UI 
}; 

worker.RunWorkerAsync(); 

асинхронные/Await картина:

Действия после ключевого слова ОЖИДАНИЯ, который возвращает задачу, будет работать в фоновом потоке, а остальная часть способа будет действовать в качестве обратного вызова.

public async void DoWork() 
{ 
    // Do long running task 
    var data = await Task.Run(() => new object()); 

    // Update UI here 
} 

TaskFactory:

Task.Factory.StartNew(() => new Object()).ContinueWith(task => MessageBox.Show(task.Result.ToString()), TaskScheduler.FromCurrentSynchronizationContext()); 
Смежные вопросы