Обновить данные из хранимой процедуры
У меня есть приложение C # Entity Framework. Я пытаюсь запустить хранимую процедуру из кода (никаких проблем с этим). его долго работает, около 30 минут. Я записываю журнал каждой транзакции в таблицу SQL по мере прохождения процесса. Я пытаюсь запустить процедуру из приложения, но затем отображать последние 10 записей журнала на экране, возможно, запрашивая каждые 10 секунд. это покажет прогресс.
private void Window_Loaded_1(object sender, RoutedEventArgs e)
{
Task.Run(() => _serviceProduct.RefreshAllAsync());
_cvsLog = (CollectionViewSource)(FindResource("cvsLog"));
var dispatcherTimer = new System.Windows.Threading.DispatcherTimer();
dispatcherTimer.Tick += new EventHandler(dispatcherTimer_Tick);
dispatcherTimer.Interval = TimeSpan.FromSeconds(10);
dispatcherTimer.Start();
}
private void dispatcherTimer_Tick(object sender, EventArgs e)
{
_cvsLog.Source = _serviceProduct.GetRefreshLog();
}
Я изменил код для упрощения. Поток блокируется в процессе dispatcherTime_Tick. Похоже, что хранимая процедура в порядке.
Здесь называется услуга.
public ObservableCollection<RefreshLog> GetRefreshLog()
{
using (var db = new HiggidyPiesEntities())
{
var recs = (from x in db.RefreshLogs orderby x.LG_ID descending select x).Take(30);
var obs = new ObservableCollection<RefreshLog>(recs);
return obs;
}
}
Я был на фоне рабочего маршрута и task.run, но процедура продолжает блокировать поток.
Я даже думал о запуске задания SQL из кода, а затем проследил за журналом с помощью обращений к базе данных. Может быть, сервисный брокер может быть выбором, чтобы рассмотреть?
какие-нибудь мысли о том, по какой дороге я должен идти с этим типом проблемы? заранее спасибо Скотт