У меня есть приложение фреймворка сущности С#. Я пытаюсь запустить хранимую процедуру из кода (без проблем). его длительный ход, около 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-задание из кода, а затем отслеживать журнал после этого с помощью вызовов в базе данных. Может быть, услуга-брокер может быть выбор?
любые мысли о том, с какой дорогой я должен пойти с этим типом проблемы? заранее спасибо Скотт