“请Wait"在Windows Phone应用程序c#加载条,直到sql语句完成

本文关键字:加载 直到 sql 语句 应用程序 Wait quot Phone Windows | 更新日期: 2023-09-27 18:18:25

我的Windows Phone应用程序有问题(我在开发c# WP8应用程序方面没有真正的经验:/)。我试图在stackoverflow中找到解决方案,但还没有找到正确的答案。

那么,这里是对问题的简短回顾:

我在代码中做一些SQL工作,完成后,用户获得结果列表。到目前为止还好,但是有些查询需要更多的时间,并且用户不会得到像"请等待"这样的响应。我试着实现它,但它不起作用。

我做了什么?

在main方法"MainPage()"我使用以下命令启动SQLiteConnection:

public SQLiteConnection conn = new SQLiteConnection(DB_PATH);

用户输入并按下按钮开始搜索(sql查询)。按下按钮触发的方法叫做"ButtonSearch_Click"。我在这个方法中做的第一件事是设置一个可见的进度条,上面写着"请等待":

Progressbar.Visibility = Visibility.Visible;
PleaseWaitBlock.Text = "please wait...";

之后,我对User的输入做了一些在本例中并不需要的工作。然后我创建一个sqlCommand对象:

SQLiteCommand sqlComm = new SQLiteCommand(conn);

,并使用CommandText方法输入查询,如:

sqlComm.CommandText = "SELECT * FROM abc WHERE (column_1 LIKE '" + input + "%')";

注意:"input"是用户的输入。

现在我执行查询:

var queryname = sqlComm.ExecuteQuery<table>();

之后循环queryname:

foreach (var item in queryname)
{
 // I do some work here
}

然后我使结果框可见以显示结果:

resultbox.Visibility = Visibility.Visible;

就是这样。问题是进度条不会以这种方式显示。如果我在没有sql查询的情况下尝试同样的操作,它将显示进度条,因此这意味着进度条工作。

我如何使进度条可见,直到sql语句完成?

谢谢你的回答!

亲切的问候,Youpi

“请Wait"在Windows Phone应用程序c#加载条,直到sql语句完成

似乎你正在执行工作(SQL语句)在同一线程上的UI;这可以防止UI在完成工作时做任何事情(例如显示进度条)。

有许多不同的方法可以解决这个问题,但原则上,它们都归结为同一件事:在UI以外的其他线程上执行所有耗时的工作;永远不要阻塞UI线程。

一种可能是使用BeginExecuteReader而不是ExecuteQuery,并在AsyncCallback方法中处理结果。如果您对查询结果所做的工作将很快完成,则此解决方案应该足够了。

另一种可能性是在后台工作线程中启动响应搜索点击所做的一切。如果对查询结果的处理非常耗时,那么这是必要的。当使用这种方法时,你需要记住,你不能在非UI线程上与UI元素交互;为了填充UI控件(并关闭进度条),你的工作线程动作需要为UI元素做一些类似BeginInvoke的事情。