我有一个运行8分钟的存储过程,需要触发SP,它会更新WPF应用程序中多个表中的记录,但是当SP运行8分钟时,它会超时,所以计划实现异步调用SP喜欢,只是触发SP运行,最终在8分钟内完成更新记录。我知道SP可以进行优化,但只想知道是否有触发功能并且不等待结果。
先谢谢..
答案 0 :(得分:1)
最好在后台线程上执行长时间运行的工作(例如与服务器/数据库通信),一旦线程完成,让UI线程更新UI。
使用BackgroundWorker:
易于实现背景线程。
var worker = new BackgroundWorker();
worker.DoWork += (sender, args) =>
{
// long running work
};
worker.RunWorkerCompleted += (sender, args) =>
{
// Update UI
};
worker.RunWorkerAsync();
async / await pattern:
返回任务的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());