WPF应用程序中对数据库的异步调用

时间:2015-07-31 10:29:11

标签: wpf database asynchronous

我有一个运行8分钟的存储过程,需要触发SP,它会更新WPF应用程序中多个表中的记录,但是当SP运行8分钟时,它会超时,所以计划实现异步调用SP喜欢,只是触发SP运行,最终在8分钟内完成更新记录。我知道SP可以进行优化,但只想知道是否有触发功能并且不等待结果。

先谢谢..

1 个答案:

答案 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());