gpt4 book ai didi

c# - 从数据库读取数据时让 WPF UI 负责

转载 作者:太空宇宙 更新时间:2023-11-03 20:25:20 29 4
gpt4 key购买 nike

我有一个 C# WPF 应用程序,它从数据库中读取数据然后做一些工作。但问题是当我读取数据时,我的 UI 没有响应。我已经尝试过任务和调度程序。他们都没有帮助。下面的代码在 button_click 事件中。这是代码:

DataSet ds;
DataTable dt = new DataTable();

Task myTask = new Task(new Action(() =>
{
//GetMyDataSet() returns DataSet
ds = GetMyDataSet();
dt = ds.Tables["MyTableName"];
}));

myTask.Start();

while (!myTask.IsCompleted)
{
System.Threading.Thread.Sleep(1000);
}

//Continue

最佳答案

首先,摆脱 sleep-spin,它完全违背了使用 Task 的目的,因为它不允许 UI 线程继续执行直到 Task 完成。你不想要那个!

Task myTask = Task.Factory.StartNew(
new Action(() =>
{
DataSet ds;
DataTable dt = new DataTable();

//GetMyDataSet() returns DataSet
ds = GetMyDataSet();
dt = ds.Tables["MyTableName"];

// use Invoke/BeginInvoke to update UI
}));

现在您的任务将与 UI 线程并行运行直到完成。在 Task 代码结束时,使用 Dispatcher.BeginInvoke 更新 UI。现在应该可以了。

关于c# - 从数据库读取数据时让 WPF UI 负责,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10931871/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com